1、 1 词法分析器 设计报告 班级 : 计科 1 班 任课老师: 丁志军 成员 : 陈炼( 1352364) 、 赵婧杰( 1352360) 、 刘玉晓( 1352324) 2 目 录 1 题目 . 3 2 软件功能 . 3 3 设计思路 . 3 4 物理结构 . 3 5 开发平台 . 5 6 系统的运行结果分析说明 . 5 7 参考文献 . 7 3 1 题目 了解 PL/0 词法、语法规则 , 对 PL/0 示例程序实现词 法分析,并输出分析结果 。 2 软件功能 1、读入 以 .txt 为后缀的源程序文件, 且 该文件为 pl/0 语法规则; 2、对读入的源程序进行词法分析,识别出“关键字、
2、标识符、常数、运算符 /界符” 四种类型 : a.关键字: “PROGRAM“, “BEGIN“, “END“, “CONST“, “VAR“, “WHILE“, “DO“, “IF“, “THEN“ b.标识符:由字母开头,字母、数字、或下划线组成的名字; c.常数:由 0-9 纯数字组成的字; d.运算符 /界 符: “+“, “-“, “*“, “/“, “:=“, “=“, “, “=“, “; ( 2) #include; ( 3) #include. 2、全局变量 ( 1) bufLINE: LINE=100,为源程序每行至多存放的字符数, buf 数组按行存放字符; ( 2) l
3、ength:记录每行长度; ( 3) key9:存放了 9 个关键字; 4 ( 4) ch15:存放了所有的算符 /界符 . 3、函数: ( 1) readfile(FILE *fp): 读取 .txt 文件 ,只读取一行 ( 2) lexical(char *buf,int length)(词法分析函数 ): a.判断是否为“常数” : if(bufferi=0|bufferi=1|bufferi=2|bufferi=3|bufferi=4|bufferi=5|bufferi=6|bufferi=7|bufferi=8|bufferi=9) cout | bufferi = =A) s1j=bufferi; i+; j+; s1j=0; cout“标识符 “s1endl; i-; 5 开发平台 VC+ 6.0 开发平台。 6 系统的运行结果分析说明 1、 先写好一个 PL/0 语言的程序,用 .txt 格式存放,例如: 6 2、打开 lexical.cpp 词法分析程序,编译、运行,输出如下内容: 3、可看 到输出结果符合实验要求的功能,成功把单词经过分析,归为各个类别。 7 7 参考文献 1陈火旺 , 程序设计语言编译原理,北京,国防工业 出版社, 2013 2 严蔚敏 吴伟民,数据机构( C 语言版),北京,清华大学出版社, 2014