编译原理大作业.doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理大作业.doc》由用户(四川天地人教育)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 作业
- 资源描述:
-
1、课程论文递归下降分析器的实现课程名称所属学院班级学生姓名学号二零一四年十二月目录1、递归下降分析器的设计思想. 11.1 自顶向下的语法分析方法 . 11.2 递归下降分析法 . 11.3 递归下降分器意义: . 11.4 递归下降分析器思想: . 11.5 递归下降分析器的作用: . 21.6 递归下降分析器的形成过程: . 22、递归向下分析器实现. 22.2 待分析的简单词法 . 22.3 要求构造的递归下降程序 . 32.4 主函数分析 . 33、输入串运行分析:. 44、关键代码分析及运行过程:. 54.1 关键代码分析 . 54.2 文法函数调用过程 . 65、程序测试:. 75.
2、1、当程序运行时出现如下输入程序界面. 75.2、当程序运行时出现如下输入程序界面. 7总结 . 8参考文献:. 9附录: . 10信息工程学院编译原理课程论文递归下降分析器的实现摘要:本文分析了递归下降分析器的实现以及具体的功能,所谓递归下降分析法,就是对文法中的每个非终结符编写一个函数(子程序),每个函数(子程序)的功能是识别由该非终结符所标示的语法成分。由于描述语言的文法通常是递归定义的,因此相应的这组函数(子程序)一定是相互递归的方式进行调用,所以将此种分析方法称为递归下降分析法。关键词:递归下降分析器消除递归非终结符1、递归下降分析器的设计思想1.1 自顶向下的语法分析方法自顶向下分
3、析法也称面向目标的分析方法,也就是从文法的开始符号出发企图推导出与输入的单词串完全相匹配的句子,若输入串是给定文法的句子,则必能推出,反之必然出错。自顶向下的确定分析方法需对文法有一定的限制,但由于实现方法简答、直观,便于手工构造或自动生成语法分析器,因而仍是目前常用的方法之一。而自顶向下的不确定分析方法是带回溯的分析方法,这种方法实际上是一种穷举的试探方法,因此效率低,代价高,因而极少使用。1.2 递归下降分析法递归下降分析法是确定的自上而下分析法,它要求文法是 LL(1)文法。它的基本思想是:对文法中的每个非终结符编写一个函数或子程序,每个函数或子程序的功能是识别由该非终结符所表示的语法成
4、分。并且由递归下降分析法,得出了递归下降分析器。1.3 递归下降分器意义:递归下降分析器,可以使已经消除左递归,回溯的文法,迅速判断出输入串是否满足该文法,并按照递归的方法,算出终结符,此分析器解决的手工计算繁琐问题。1.4 递归下降分析器思想:递归下降分析法是一种自顶向下的分析法,文法中的每一个非终结符对应一个递归过程(函数)。分析过程就是从文法开始符出发执行一组递归过程(函数),第 1 页 共 12 页信息工程学院编译原理课程论文这样向下推到直到推出句子;或者是从根节点出发,自顶向下为输入串寻找一个最左匹配序列,建立一个语法树。1.5 递归下降分析器的作用:(1)读入输入的符号串;(2)对
5、输入的符号串逐个与栈中的终结符比较;(3)识别出匹配的输入字符;(4)确定文法是否能推导出输入串1.6 递归下降分析器的形成过程:实现递归下降分析器,首先要消除产生式的左递归,其次要消除产生式的回溯,得到可以编写递归下降分析器的文法如(图 1)开始输入串进入消除左递归消除回溯根据文法编写递归下降分析器否通过递归下降分析器确定输入串是否正确是结束图 1 递归下降分析器形成过程2、递归向下分析器实现2.2 待分析的简单词法第 2 页 共 12 页信息工程学院编译原理课程论文(1)非终结符:EE TTF(代码中 T用 T1 代替) (代码中 E用 E1 代替)(2)终结符+* ( ) i2.3 要求
6、构造的递归下降程序文法 GE:E-E+T|TT-T*F|FF-(E)|i首先,消除该文法的左递归,得到文法 GE:E-TEE-+TE|T-FTT-*FT|F-(E)|i然后,根据 LL(1)文法的判断条件,对非终结符 S 和 T的不同产生式的集进行考察,经验证改进后的文法已经是 LL(1)文法。最后构造递归下降分析程序。每个函数名是相应的非终结符,函数体则是根据规则右部符号串的结构编写。(非终结符在这里统称为 A)输入的字符串以#结束。(1)当遇到终结符 a 时,则编写语句If(当前读到的输入符号=a)读入下一个输入符号(2)当遇到非终结符 A 时,则编写语句调用 A()。(3)当遇到 A-
7、规则时,则编写语句。If(当前读到的输入符号不属于 Follow(A)error() (退出)。(4)当某个非终结符的规则有多个候选式时,按 LL(1)文法的条件能唯一地选择一个候选式进行推导。2.4 主函数分析第 3 页 共 12 页信息工程学院编译原理课程论文此文发一共可分为个函数,分别为 E(),E(),T(),T(),F(),其中在 E 函数中可调用 T(),E()两个函数。在 E()函数中可以判断输出串“+”,并调用 T (),E()两个函数,在 T()函数中可以调用 F(),T()两个函数。在 T()函数中可以判断输入串“*”,并调用 F()和 T()两个函数。在 F()函数中可以
展开阅读全文