编译原理词法分析器(C语言实现)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
词法规定
可识别关键字共6个:int real if then else while
除关键字外,以字母开头,后跟字母或数字的符号串为标识符,超过64个字符出错处理
可识别分隔符共8个:( ) [ ] { } , ;
可识别操作符共11个:+ - * / = == < <= > >= <>
以“//”开头到该行尾部为注释,超过255个字符出错处理
其他字符均当作空白处理
可识别的数值有整数和实数(用正规式描述):
digit:0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
整数:digit+ (不能超过255个字符,超过程序崩溃,忘了写这点了)
exponent:E ( + | - | ? ) digit+
fraction:. digit+
实数:digit+ exponent | digit+ fraction ( exponent | ? ) (同上,不能超过255个字符,超过程序崩溃)
程序说明
可以同时拖动多个源文件到程序EXE上,将文件名作为参数传递给程序进行执行,无参时默认分析程序目录下的in.ks文件
在源文件目录输出分析报告“源文件名_WordReport.html”,彩色高亮显示源代码,鼠标置于单词上时,可以查看提示信息
程序界面显示信息及是否输出分析报告可在word.h文件中调整
单词DFA状态图描述
圆形是就绪状态(State 0000),圆角矩形是其它状态,只有状态标号的是中间状态,有文字说明的是终结状态,状态标号前带有“~”的状态为多读了一个字符。
5001 注释
7003
~3004 除号
图2-1 注释及除号识别状态图
7001~1001 尚未识别标识符
图2-2 标识符识别状态图
70027008
7007
7009
7010
~2001 整数~2002 实数
图2-3 数值类型单词识别状态图
其它更为简单的单词的状态图没有绘出。
处理流程说明
图3-1 词法分析模块流程图
运行效果截图
图4-1 程序界面截图分析报告截图
图5-1 HTML分析报告截图
程序源代码
word.h.htm report.h.htm word.c.htm 双击图标查看文件
输入源程序示例
in.txt
双击图标查看文件
版权
Write by MillerLee 米兰编写制作
E-mail: miller_lee@
Blog:
2012-04-30