编译原理词法分析器(C语言实现)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档