- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 10
编译原理实验报告
实验名称:
编写递归下降语法分析器
实验类型:
验证型实验
指导教师:
专业班级:
姓 名:
学 号:
电子邮件:
实验地点:
实验成绩:
日期: 2012 年4 月 26 日
目录
实验目的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2
实验过程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2
背景知识。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2
程序总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2
程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
试验结果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5
讨论与分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7
附录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7
试验者自评。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11
一、实验目的
通过设计、编制、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握常用的语法分析方法。通过本实验,应达到以下目标: 1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2、掌握词法分析的实现方法。 3、上机调试编出的语法分析程序。
二、实验过程
我们在设计递归下降语法分析器时,应该首先对递归下降语法的相关的背景知识有足够的了解以及熟练的掌握。从而在脑海里形成语法分析的一般方案,根据方案一步步所要实现的目的,形成对递归下降语法分析器程序的模块划分和整体规划。
背景知识
无回溯的自上向下分析技术可用的先决条件是:无左递归和无回溯。
无左递归:既没有直接左递归,也没有间接左递归。
无回溯:对于任一非终结符号U的产生式右部x1|x2|…|xn,其对应的字的首终结符号两两不相交。
如果一个文法不含回路,也不含以ε为右部的产生式,那么可以通过执行消除文法左递归的算法消除文法的一切左递归(改写后的文法可能含有以ε为右部的产生式)。
文法的左递归消除算法:
1、将文法G的所有非终结符排序为U1 ,U2 ,… ,Un;
2、For(i=1;i++;i≥n)
{
for j→1 to i-1
把产生式Ui→Ujα替换成Ui→β1α| β2α|…|βmα;
其中:Uj→ β1| β2 |… |βm 消除Ui产生式中的直接左递归;
}
3.化简改写之后的文法,删除多余产生式。
文法的直接左递归消除公式:
直接左递归形式:
U→Ux|y;
其中:x,y∈(VN∪VT)* ,y不以U打头。
直接左递归的消除:
U→yU?
U?→xU?|ε
直接左递归的一般形式:
U→Ux1|Ux2|…|Uxm|y1|y2|…|yn;
其中:xi≠ε ,yi都不以U打头。
一般形式直接左递归的消除:
U→y1U?| y2U? |…| ynU?
U?→x1U?| x2U?| …| xmU?|ε
回溯的消除的前提是文法不得含有左递归,可提左因子来消除回溯。
程序总体设计
1、分析对象
分析算术表达式的BNF定义如下:
〈算术表达式〉→〈项〉|〈算术表达式〉+〈项〉|〈算术表达式〉-〈项〉
〈项〉→〈因式〉|〈项〉*〈因式〉|〈项〉/〈因式〉
〈因式〉→〈变量〉│(〈算术表达式〉)
〈变量〉→i
用符号表示如下:
E→T|E+T|E-T
T→F|T*F|T/F
F→i│(E)
2.经消除直接左递归后
E→TE’
E’ →+TE’|-TE’|ε
T→FT’
T’ →*FT’|/FT’|ε
F →i|(E)
3.根据递归下降法分析法,完成上述算术表达式的分析器构造。主要完成:
(1) 通知外界键入算术表达式;
(2) 控制过程分析算术表达式;
(3) 根据分析结果正误,分别通知外界不同的信息。
4、程序流程图
三、实验结果
(1)输入i+i#
(2)输入+i#
(3)左右括号测试
(4)测试回车
(5)综合测试1
四、讨论与分
文档评论(0)