编译原理 LR分析法实验报告.doc

编译原理 LR分析法实验报告.doc

ID:57312738

大小:83.50 KB

页数:6页

时间:2020-08-11

编译原理 LR分析法实验报告.doc_第1页
编译原理 LR分析法实验报告.doc_第2页
编译原理 LR分析法实验报告.doc_第3页
编译原理 LR分析法实验报告.doc_第4页
编译原理 LR分析法实验报告.doc_第5页
资源描述:

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

1、实验五、LR分析法实验报告计算机与信息技术学院程序功能描述通过设计、编写和构造LR(0)项目集规范簇和LR分析表、对给定的符号串进行LR分析的程序,了解构造LR(0)分析表的步骤,对文法的要求,能够从文法G出发生成LR(0)分析表,并对给定的符号串进行分析。要求以表格或图形的方式实现。G[E]:E→aA∣bBA→cA∣dB→cB∣d设计要求:(1)构造LR(0)项目集规范簇;要求输入LR(0)文法时,可以直接输入,也可以读取文件,并能够以表格的形式输出项目集规范簇集识别活前缀的有穷自动机(2)构造LR(0)分析表。要求要求输入LR(0)文法时,可以直接输入,也可以读取文件;

2、输出项目集规范簇,可以调用前一处理部分的结果,输出为LR(0)分析表(3)LR(0)分析过程【移进、归约、接受、报错】的实现。要求调用前一部分处理结果的分析表,输入一个符号串,依据LR(0)分析表输出与句子对应的语法树,或直接以表格形式输出分析过程。主要数据结构描述数据名称数据类型数据描述scint终结符个数ncint非终结符个数SC字符数组存放终结符NC字符数组存放非终结符CAProduction数组存放产生式excel_actionAction数组存放Action分析表excel_goto整型数组存放Goto分析表state整型数组状态栈stack字符数组分析栈TOKE

3、N字符数组输入序列currentint当前输入指针topint状态栈顶指针inint分析栈顶指针numint输入串长度Pcount整型数组每个状态里项目集数目Pnumint产生式个数Pcint状态集个数PParadigm数组存放状态集项目集程序结构描述1.首先要求用户输入规则,并保存,分析出规则的数目,规则里的非终结符号和终结符号等信息,为下一步分析备用。2.根据产生式构造分析表,首先分析每个状态里有哪些产生式,逐步将状态构造完整,最后的规约状态数应该等于产生式的个数。3.在构造状态的时候,首先将所有的内容均填为出错情况,在每一步状态转换时可以将移进项目填进action表中

4、,对于最后的规约项目,则再用规约覆盖掉之前填的移进。4.要求用户输入分析串,并保存在输入序列数组中。5.每一步根据当前的状态栈栈顶状态和输入符号查分析表,若是移进,则直接将符号和相应的状态添进栈中,否则弹出与产生式右部相同个数的字符和状态,并用剩下的状态和产生式的左部在goto表中进行查找,将非终结符和得到的状态压入两个栈内。6.无论是规约还是移进都要输出当前三个栈内保存内容的情况。7.如果碰到acc则输出accept,若碰到error则输出error,否则则继续进行规约和移进,不进行结果输出,直至输出接受或出错。程序测试:测试1:E→aA∣bBA→cA∣dB→cB∣dE2

5、aAE2bBA2cAB2cBA1dB1dS0输入:bcd#输出:输入二:acccccd#输出:输入三:acccccd#输出:学习总结对各个栈的操作很容易出错,是直接覆盖掉栈顶的状态还是弹出几个状态覆盖掉一个状态,对于弹出的状态,原数组当中的内容要清空,出栈入栈的字符数目很容易出错。构造分析表很难,遇到很多问题,用程序实现比用手工操作要考虑更多的问题,有很多种情况,本实验给的规则比较简单,比如对于E→aA和E→bB,输入a和输入b都只有一个对应产生式可以选择,也没有太长的字符重复多次的序列,但是也要对LR(0)分析法有很熟练的掌握。实验实现的相当不完善,对着给定的序列写,不够

6、具有通用性,也不够完备,对于程序,我首先将分析表置入,实现了有了分析表如何判定输入序列是否合法的部分,然后再实现输入产生式的功能,分析出终结符和非终结符,实现了分析表横坐标和纵坐标的排序,再实现项目集规范族的状态分析,边分析边构造分析表。

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

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

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