- 14
- 0
- 约6.73千字
- 约 10页
- 2017-11-10 发布于江苏
- 举报
C语言词法分析小程序———焦童
沈阳航空航天大学
编 译 实 验 报 告
实验报告名称:C语言小子集的词法分析程序
院(系):计算机学院
专 业:计算机科学与技术
班 级学 号:2012040101064
姓 名:焦童
一.实验要求:
(1)功能:实现 C 语言小子集程序的词法分析。
(2)输入: c 语言小子集的程序片段。
(3)输出:单词序列。
二.单词的属性和表格
单词的属性主要分为五大部分:
1. 关键字,是由程序语言定义的具有固有意义的标示符。有时称为保留字或基
本字。如:int,float,double,char 等。
2. 标识符,用来表示各种名字,如变量名,数组名等。
3. 常量, 常量的类型一般有整型,实型,布尔型,文字型等等。
4. 运算符,如 +,-,*,/,%等。 5. 界符 ,如逗号,分号,括号等等。
表 1 C 语言小子集的定义表
种别码 符号 种别码 符号 种别码 符号 0 无定义 1 主函数 2 无符号实数 3 普通标示符 4 关键字 5 界符 6 运算符 7 自增运算符 8 自减运算符 9 类型标识符 10 区域运算符 总控流程图
Y
N
四.测试运行
先输入源代码文件地址
文件源代码如下
显示经过词法分析
源代码
#includestring.h
#includestdio.h
#includestdlib.h
#includectype.h
char *Key[10]={main,void,int,char,printf,scanf,else,if,return};
char Word[20],ch;
int IsAlpha(char c) { //判断是否为字母
if(((c=z)(c=a))||((c=Z)(c=A)))
return 1;
else
return 0;
}
int IsNum(char c){ //判断是否为数字
if(c=0c=9) return 1;
else return 0; }
int IsKey(char *Word){ //识别关键字函数
int m,i;
for(i=0;i9;i++){
if((m=strcmp(Word,Key[i]))==0)
{
if(i==0)
return 2;
return 1;
}
}
return 0;
}
void scanner(FILE *fp){ //扫描函数
char Word[20]={\0};
char ch;
int i,c;
ch=fgetc(fp); //获取字符,指针fp并自动指向下一个字符
if(IsAlpha(ch)){ //判断该字符是否是字母
Word[0]=ch;
ch=fgetc(fp);
i=1;
while(IsNum(ch)||IsAlpha(ch)){ //判断该字符是否是字母或数字
Word[i]=ch;
i++;
ch=fgetc(fp);
}
Word[i]=\0; //\0 代表字符结束(空格)
fseek(fp,-1,1); //回退一个字符
c=IsKey(Word); //判断是否是关键字
if(c==0)
printf(%s\t 3 普通标识符\n\n,Word);//不是关键字
else if(c==2)
printf(%s\t 1 主函数\n\n,Word);
else
printf(%s\t 4 关键字\n\n,Word);
}//输出关键字
else //开始判断的字符不是字母
if(IsNum(ch)){ //判断是否是数字
您可能关注的文档
最近下载
- 经营分析会,必须要讲清楚的几个指标(25页 PPT).pptx VIP
- 总经理营销总监经营例会运营分析模板PPT.pptx VIP
- 新人教版九年级语文上册期末测试卷及答案【审定版】.doc VIP
- 2025 经营分析核心指标及搭建指南(23页 PPT).pptx VIP
- 风电项目建设标准强制性条文监督检查计划.docx VIP
- 奥的斯 HAA21310BW(ACD5-MRL 40A)电气原理图.pdf VIP
- 洛阳市第五人民医院2026年编外人员公开招聘备考题库及一套答案详解.docx VIP
- 畜禽屠宰加工企业消防安全指南.docx VIP
- DND传奇职业可选专长.docx VIP
- 洛阳市第五人民医院2026年编外人员公开招聘备考题库及完整答案详解一套.docx VIP
原创力文档

文档评论(0)