中北大学软件学院
实验报告
专业课程名称学号姓名
软件工程编译原理
f辅导教师张静
成绩
实验日期2015519
实验时间14001600
1实验名称:词法分析器的设计与实现
2、实验目的
(1)掌握C语言单词符号的划分、正规式、状态转换图及词法分析器的实现。(2)掌握词法分析程序的作用。
3、实验要求
(1)对任给的一个C语言源程序,能够滤掉空格、回车换行符、tab键及注释。(2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表。(3)输出有词法错误的单词及所在行号。(在此阶段只能识别有限的词法错误)
4、实验原理
根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。
5、实验步骤
(1)根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。(2)根据状态转换图,构造识别各类单词的词法分析器。
6、状态转换图及词法分析程序
f开始
输入源文件路径
否路径是否有
效是打开源文件
初始化文件指针
识别指针内容
文件结束?
是
结束
否
是空格,空白或换行吗
否
是字母吗
否
是数字吗
否
是界符吗
否
将字符加入字符数组Word
是跳过该字符
指向下一字符
是
将字符加入字符数组Word
将字符加入字符数组Word
指向下一字符
是字母惑数字吗
是指向下一字符是
识别指针内容
是
将字符加入字符数组Word
输出word为界符
将字符加入字符数组Word
输出Word内容为不可识别
回退
否
将word与关键
是数字吗
字表key进行匹
配
否
输出word为普通标示符
否
匹配?
是
输出word为关键字
输出word为常数
指向下一字符
词法分析程序cpp
i
cludestri
gh
i
cludestdioh
i
cludestdlibh
i
cludectypeh
定义关键字
charKey10