中北大学软件学院实 验 报 告 专 业 软件工程 课程名称 编译原理 学 号 1414011712 姓 名 杨倩 辅导老师 张静 成绩 14:00~18:001 实验名称 :词法分析器的设计与实现2、实验目的(1)掌握 C 语言单词符号的划分、正规式、状态转换图及词法分析器的实现
(2)掌握词法分析程序的作用
3、实验要求(1)对任给的一个 C 语言源程序,能够滤掉空格、回车换行符、tab 键及注释
(2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表
(3)输出有词法错误的单词及所在行号
(在此阶段只能识别有限的词法错误)4、实验原理根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理
这些程序的功能就是识别以相应字符开头的各类单词符号
5、实验步骤(1)根据 C 语言各类单词的正规式,构造能识别各类单词的状态转换图
(2)根据状态转换图,构造识别各类单词的词法分析器
6、状态转换图及词法分析程序//词法分析程序
cpp#include=’A’))) return 1;else return 0;}int IsNum(char c){ //推断是否为数字if(c>='0’&&c〈=’9’) return 1;else return 0;}int IsKey(char *Word){ //识别关键字函数int m,i;for(i=0;i〈9;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 并自动指向下一