1、实现C语言小子集程序的词法分析航空航天大学编 译 实 验 报 告实验名称:实现C语言小子集程序的词法分析 院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:完成日期:一实验要求:(1)功能:实现 C 语言小子集程序的词法分析。(2)输入: C语言小子集的程序片段。(3)输出:单词序列。二单词的属性和表格单词的属性主要分为五大部分:1. 关键字,是由程序语言定义的具有固有意义的标示符。有时称为保留字或基本字。如:void,int,float,char,if,else,while,do,return。2. 标识符,用来表示各种名字,如变量名,数组名等。3. 常量, 常量的类型一般
2、有整型,实型,布尔型,文字型等等。4. 运算符,如 +,-,*,/,%等 5. 界符 ,如逗号,分号,括号等等。 表 1 C 语言小子集的定义表种别码符号种别码符号种别码符号0无定义11=221标示符12=23;2整数13!=24,3+14&25void4-15|26int5*16=27float6/17(28char7%18)29if81930else92132do33return 三.总控流程图 N Y 主程序流程图在主程序中,打开文件,调用函数,当文件中的读完后,结束程序。关键码流程图字母流程图 N Y数字流程图 N Y四.测试运行1.屏幕输出2.文件源代码如下3.编码实现词法分析程序5
3、.程序源代码#include #include #include char *g9 = void, int, float, char, if, else,while,do,return; int nm9=25,26,27,28,29,30,31,32,33; FILE *fP; int ikey( char str) int i,m; for(i=0; i= A & c = a & c = 0 & c = 9) return 1; else return 0;void ap() int n; char c; int i=0; char str100; while(c = fgetc(fP) !
4、= EOF) if(c = | c = t) continue; else if( c = n) printf(n); else if(num(c)=1) while(num(c) stri= c; i+; c = fgetc(fP); stri=0; fseek(fP, -1, SEEK_CUR); printf(,); else if(word(c) i=0; while(word(c) | num(c) stri= c; i+; c = fgetc(fP); stri=0; i=0; fseek(fP, -1, SEEK_CUR); n = ikey(str); if(n != 0) p
5、rintf(,); else printf(,str); else switch(c) case +: printf(,); break; case -: printf(,); break; case *: printf(,); break; case /: printf(,); break; case %: printf(,); break; case : printf(,); break; case =: printf(,); break; case : printf(,); break; case =: printf(,); break; case =: printf(,); break
6、; case !=: printf(,); break; case &: printf(,); break; case |: printf(,); break; case =: printf(,); break; case (: printf(,); break; case ): printf(,); break; case : printf(,); break; case : printf(,); break; case : printf(,); break; case : printf(,); break; case ;: printf(,); break; case ,: printf(,); break; int main(int argc,char argv) fP = fopen(test1.txt, r); ap(); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1