编译原理课程设计 词法分析器 学生所在学院:燕山大学信息学院 学生所在班级: 学 生 姓 名: 学 号: 2011年 12 月 一.实验目的:设计、编制和调试一个具体的词法分析程序,加深对词法分析的理解。
二.实验要求: 1.通过对PL/0词法分析程序(GETSYS)的分析,编制一个具有以下功能的词法分析程序:
a.输入待进行词法分析的源程序,输出为单词串,即由(单词,类别)所组成的二元组序列;
b.有一定的错误检查能力,例如能发现2a这类不能作为单词的字符串。 2.本程序自行规定 (1)保留字
\double\long\ruct\ed\ (2)分隔符
\(3)运算符
\<\=\三.使用环境:
Windows下的visual c++6.0; 四.调试程序:
1、举例说明 文件 test.txt 目标程序: var c,i,b; procedure p; begin
for(i:=0;i
begin
c:=0;write(c); end
end;
五.运行结果
查看内部码文件-->输入命令9
六.流程图 (1)总流程图
否 输入串结束
是
结束
此处用到的函数为load()scan(),用load()对所有全局变量置初值,用scan()对输入的源文件进行扫描。 (2)扫描程序
可读 否 是 读入字符
是 是否为EOF
否
是
是结束符,空格符,水平制表符,回车符 提示出错 读入文件名 调用扫描源程序文件 置初值 分析完成 否 是 单引号 否 是 双引号 否 是否为字母 进入保留字,标识符 或“ _ ” 是 处理if 否 否 是否为数字 是
否 是 是否为/ 进入注释处理if
否
进入运算符,分隔符处理 进入整型,浮点型处理if 进入双引号处理if 进入单引号处理if
所用函数:扫描函数scan()
扫描保留字,标识符char_search(char *word) 扫描整型inta_search(char *word) 扫描浮点类型intb_search(char *word) 扫描字符串cc_search(char *word) 扫描字符c_search(char *word)
七.程序解释 1.所有函数一览表 load()置初值