- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三自顶向下语法分析--递归下降法
实验三 递归下降法判断算术表达式的正确性
学时数:2-4
一、实验目的和要求
用递归下降技术实现语法分析器;
理解自顶向下语法分析方法;
熟练掌握预测分析程序的构造方法。
二、实验内容
算术表达式的文法是G[E]:
E→E+T| T
T→T*F| F
F→(E)| i
用递归下降分析法按文法G[E]对算术表达式(包括+、*、()的算术表达式)进行语法分析,判断该表达式是否正确。
三、实验步骤
1、准备:阅读课本有关章节,将上述算术表达式的文法改造成LL(1)文法(即消除左递归和提取左公因子);设计出预测分析表;按P87例4.12编写程序。
上机调试,发现错误,分析错误,再修改完善。
四、测试要求
为降低难度,表达式中不含变量(只含单个无符号整数或i);
如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);
测试用的表达式建议事先放在文本文件中,一行存放一个表达式,以分号结束。而语法分析程序的输出结果写在另一个文本文件中;
选作:对学有余力的同学,可增加功能:当判断一个表达式正确时,输出计算结果。
5、程序输入/输出示例:
如参考C语言的运算符。输入如下表达式(以分号为结束)和输出结果:
(a)1; 或 i;
输出:正确
(b)1+2; 或 i+i;
输出:正确
(c)(1+2)*3+4-(5+6*7); 或 (i+i)*i+i-(i+i*i);
输出:正确
(d)((1+2)*3+4 或 ((i+i)*i+i;
输出:错误,缺少右括号
(e)1+2+3+(*4/5) 或 i+i+i+(*4/5);
输出:错误
五、实验报告要求
1、写出修改后LL(1)文法
2、通过对核心代码做注释或通过程序流程图的方式说明递归下降分析程序的实现思想。
3、写出调试程序出现的问题及解决的方法。
4、给出测试的结果。
六、思考(选作)
文法G[E]所构造算术表达式只包含+和*。请修改文法和程序,使得该语法程序可判断包含减号和除号的算术表达式的正确性。
[实验指导]
将文法G[E]改造为LL(1)文法如下:
G’[E]:
E → TE’
E’ → +TE’| ε
T → FT’
T’→ *FT’|ε
F → (E)| i
[补充说明]
预测分析法分析程序可以从网上下载,但要求:
(1)理解该程序,在实验报告中说明该程序所使用的文法及修改后的文法;
(2)实验报告要求同上
原创力文档


文档评论(0)