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

上传人:壹****1 文档编号:469785293 上传时间:2023-10-31 格式:DOCX 页数:4 大小:50.12KB
返回 下载 相关 举报
北邮编译原理实验--LR语法分析-实验报告_第1页
第1页 / 共4页
北邮编译原理实验--LR语法分析-实验报告_第2页
第2页 / 共4页
北邮编译原理实验--LR语法分析-实验报告_第3页
第3页 / 共4页
北邮编译原理实验--LR语法分析-实验报告_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《北邮编译原理实验--LR语法分析-实验报告》由会员分享,可在线阅读,更多相关《北邮编译原理实验--LR语法分析-实验报告(4页珍藏版)》请在金锄头文库上搜索。

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

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

3、)总控程序,也可以称为驱动程序。对所有的LR分析器总控程序都是相同的。(2)分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表将不同,分析表又可以分为动作表(ACTION)和状态转换(GOTO)表两个部分,它们都可用二维数组表示。(3)分析栈,包括文法符号栈和相应的状态栈,它们均是先进后出栈。分析器的动作就是由栈顶状态和当前输入符号所决定。(4)LR分析器的结构中:SP为栈指针,Si为状态栈,Xi为文法符号栈。状态转换表用GOTOi,X=j表示,规定当栈顶状态为i,遇到当前文法符号为X时应转向状态j,X为终结符或非终结符3.(1)识别文法的LR(0)项目集规范族

4、的构造(2)LR(0)分析表的构造(3)LR(0)分析器总控程序构造七.输入输出输入:1.在test.txt中存入文法:E-E+T|E-T|TT-T/F|T*F|FF-i|n|(E)在运行是只要输入文件名就行。2.根据提示输入要分析的句子。输出:1.输出LR分析表 2.输出句子的LR分析过程八实验结果 编译为成功。 九、实验总结 在这次课程设计期间,经过长时间的修改与调试,发现了自己的许多不足之处,由于对以前学习的知识还有些地方不太熟练,所以程序在调试初期有很多错误。比如说指针部分,稍有不注意就弄错了,还有输出格式部分,程序判断部分,在调试过程中都先后出现了些小小的问题,在此期间,通过查看相关资料,通过反复修改调试。并起到了很好的查漏补缺作用。由于调试时过程的反复与修改,不便做记录,故在此没写调试记录。由于时间有限,所遍程序没有经过特别的优化,代码可能有些重复、烦琐、纰漏,所编程序难免存在一些问题,比如说,本程序没有对多字符构成的运算符和界符作为单独的单词进行分析。通过这次课程设计,我深深的认识到,如果仅仅只是运用理论知识,是远远不够的。我们必须将理论知识学好,然后理论联系实际,才能很好的将编译原理等课程学好,并用于实际案例中。同时,经过这次课程设计,我发觉自己对以前所学的C、C+、数据结构等课程的理解加深了,知识巩固了,动手操作能力也变强了。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号