北邮编译原理实验--LR语法分析-实验报告.docx

北邮编译原理实验--LR语法分析-实验报告.docx

ID:58370790

大小:43.86 KB

页数:4页

时间:2020-04-30

北邮编译原理实验--LR语法分析-实验报告.docx_第1页
北邮编译原理实验--LR语法分析-实验报告.docx_第2页
北邮编译原理实验--LR语法分析-实验报告.docx_第3页
北邮编译原理实验--LR语法分析-实验报告.docx_第4页
资源描述:

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

1、LR语法分析实验报告班级:姓名:杨娜学号:一.题目:LR语法分析程序的设计与实现二.设计目的:(1)了解语法分析器的生成工具和编译器的设计。(2)了解自上而下语法分析器的构造过程。(3).理解和掌握LR语法分析方法的基本原理;根据给出的LR)文法,掌握LR分析表的构造及分析过程的实现。(4)掌握预测分析程序如何使用分析表和栈联合控制实现LR分析。三.实验内容:编写语法分析程序,实现对算术表达式的语法分析,要求所分析算数表达式由如下的文法产生:E->E+T

2、E-T

3、TT->T/F

4、T*F

5、FF->i

6、n

7、(E)四.实验要求:编写LR语法分析程序,要求

8、如下:(1)构造识别所有活动的DFA(2)构造LR分析表(3)编程实现算法4.3,构造LR分析程序五.算法流程分析程序可分为如下几步:六.算法设计1.数据结构s:文法开始符号line:产生式的个数G[i][0]:产生式的标号Vt[]:终结符Vn[]:非终结符id:项目集编号Prjt*next:指示下一个项目集Prjt[]:存储项目的编号,prjt[0]项目编号的个数Pointafter[]:圆点后的字符,pointafter[0]为字符个数Prjset*actorgo[]:存储出度Pointbefore:圆点前面的字符Form:动态数组下标,同时作

9、为符号的编号Vn[]:非终结符序列Vt[]:终结符序列2.LR分析器由三个部分组成(1)总控程序,也可以称为驱动程序。对所有的LR分析器总控程序都是相同的。(2)分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表将不同,分析表又可以分为动作表(ACTION)和状态转换(GOTO)表两个部分,它们都可用二维数组表示。(3)分析栈,包括文法符号栈和相应的状态栈,它们均是先进后出栈。分析器的动作就是由栈顶状态和当前输入符号所决定。(4)LR分析器的结构中:SP为栈指针,S[i]为状态栈,X[i]为文法符号栈。状态转换表用G

10、OTO[i,X]=j表示,规定当栈顶状态为i,遇到当前文法符号为X时应转向状态j,X为终结符或非终结符3.(1)识别文法的LR(0)项目集规范族的构造(2)LR(0)分析表的构造(3)LR(0)分析器总控程序构造七.输入输出输入:1.在test.txt中存入文法:E->E+T

11、E-T

12、TT->T/F

13、T*F

14、FF->i

15、n

16、(E)在运行是只要输入文件名就行。2.根据提示输入要分析的句子。输出:1.输出LR分析表2.输出句子的LR分析过程八.实验结果编译为成功。九、实验总结 在这次课程设计期间,经过长时间的修改与调试,发现了自己的许多不足之处,由于对

17、以前学习的知识还有些地方不太熟练,所以程序在调试初期有很多错误。比如说指针部分,稍有不注意就弄错了,还有输出格式部分,程序判断部分,在调试过程中都先后出现了些小小的问题,在此期间,通过查看相关资料,通过反复修改调试。并起到了很好的查漏补缺作用。由于调试时过程的反复与修改,不便做记录,故在此没写调试记录。由于时间有限,所遍程序没有经过特别的优化,代码可能有些重复、烦琐、纰漏,所编程序难免存在一些问题,比如说,本程序没有对多字符构成的运算符和界符作为单独的单词进行分析。通过这次课程设计,我深深的认识到,如果仅仅只是运用理论知识,是远远不够的。我们必须将

18、理论知识学好,然后理论联系实际,才能很好的将《编译原理》等课程学好,并用于实际案例中。同时,经过这次课程设计,我发觉自己对以前所学的《C》、《C++》、《数据结构》等课程的理解加深了,知识巩固了,动手操作能力也变强了。

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

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

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