编译原理--实验报告1

编译原理--实验报告1

ID:41126970

大小:141.00 KB

页数:4页

时间:2019-08-17

编译原理--实验报告1_第1页
编译原理--实验报告1_第2页
编译原理--实验报告1_第3页
编译原理--实验报告1_第4页
资源描述:

《编译原理--实验报告1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、大学计算机科学与技术学院实验报告计算机基础实验教学中心编制成绩指导教师(签字)(存档)——————————————————————————————————————————————★实验课程名称:编译原理课程设计★实验项目:词法分析程序开发★实验仪器:机房计算机★实验要求:•独立完成SNL语言的词法分析器•学会用直接转向法实现有限自动机•掌握各类单词的形式描述★实验步骤、分析设计与结果:实验步骤:一、构造识别单词的自动机1.根据构成规则对程序语言的单词按类构造出相应的状态转换图。2.对各类单词的状态转换图合并,构成一个能识别语言所有单词的状态转换图。合并步骤为:(1)将各类

2、单词的状态转换图的初始状态合并为一个唯一的初态;(2)化简调整状态冲突和对冲突状态重新编号;(3)如有必要,增加出错状态。下面是DFA,我们将所有的识别完成的状态之后就认为其变成完成状态。并且只有三种出错状态(1)赋值:=出错;(2)字符引用‘A’出错;(3)使用了未声明的字符如&等出错。4一、用直接转向法实现有限自动机,生成词法分析程序1、定义SNL语言的Token结构:typedefstructtokenType{intlineshow;//保存为第几行LexTypeLex;//枚举类型charSem[Maxoftoken+1];//语义信息}TokenType1;4

3、1、主要函数(1)voidprintTokenlist(ChainNodeType*head)//输出token序列,比较详细(2)voidChainToFile(ChainNodeType*Chainhead)//这里没有详细的说明情况,枚举类型用的是数字(3)intgetNextChar(void)//得到下一个单词(4)voidungetNextChar(void)//实现后退功能(5)LexTypereservedLookup(char*s)//查找关键字(6)voidgetTokenlist(void)//词法分析主要的部分,最后得到链表(7)voidCOurC

4、ompilerDlg::OnWordanalyze(void)//可视化部分(8)voidCOurCompilerDlg::OnOpensource(void)3、分工部分首先,大家先对课本进行复习,集体进行讨论,研读附带的代码,之后进行分工编写,完成后进行整合调试。丁主要完成程序的可视化和图形文件接口方面的工作,最后将各个函数整合调试。张主要完成词法分析函数,主要是函数gettokenlist函数,及相关的小函数,最后编写报告。樊主要完成文件流方面的工作,显示保存源文件及显示结果。2、实验结果以上是正确分析程序的结果。4这里故意输入一个错误的程序,可以看到对错误字符&,

5、x:3,都能提示错误。1、心得体会:(1)通过复习以前的课程和研读代码,自己亲自编写,更深入了解了词法分析方面的工作。(2)加强了原来C的一些文件流,结构体和相关函数的应用熟悉,包括一些库函数的应用比如fgets,strcmp,isdigit,isalpha等。(3)调试过程中,发现的一些不太容易发现的错误,比如MFC中已经有的关键字,我们重新进行了定义枚举名字ENDFILE1,ERROR1,CHAR1。还有一些多次运行时要注意恢复各个变量的初始值。(4)对DFA的重新学习和发现对代码的实现还是有很多注意的地方。特别是循环的应用。4

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。