2022年编译原理递归下降子程序课程设计报告 .pdf
《2022年编译原理递归下降子程序课程设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理递归下降子程序课程设计报告 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理课程设计报告2011 年 12 月 2 日设计题目递归下降分析程序的实现学号专业班级计算机科学与技术学生姓名指导教师名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -一、实验目的:(1)掌握自上而下语法分析的要求与特点。(2)掌握递归下降语法分析的基本原理和方法。(3)掌握相应数据结构的设计方法。二、实验内容:递归下降分析程序的实现设计内容及要求:对文法 G:E E+T|T 构造出 G的递归下降分析程序。程序显示输出TT*F|F 匹配过程(即自上而下生成语法分析树的步骤,F(E)|i 输出各匹配产生式序号即可)。三、设计思路:(1)语法分析:语法分析是编译程序的核
2、心部分,任务是分析一个文法的句子结构。递归下降分析程序的实现的功能:按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序)。(2)自上而下分析:从文法的开始符号出发,向下推导,推出句子。可分为带“回溯”的和不带回溯的递归子程序(递归下降)分析方法。它的主旨是对任何输入串,试图用一切可能的办法,从文法开始符号(根结点)出发,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。也即从文法的开始符号出发,反复使用各种产生式,寻找 匹配 的推导。(3)递归下降分析法:对每一语法变量(非终结符)构造一个相应的子程序,每个子程序识别一定的语法单位,通过子程序间的信息反
3、馈和联合作用实现对输入串的识别。(4)分析过程中遇到的问题:a.分析过程中,当一个非终结符用某一个候选匹配成功时,这种匹配可能是暂时的。出错时,不得不“回溯”。b.文法左递归问题。含有左递归的文法将使自上而下的分析陷入无限循环。(5)构造不带回溯的自上而下分析算法:a.要消除文法的左递归性:一个文法可以消除左递归的条件是不含以为右部的产生式不含回路。b.克服回溯,构造不带回溯的自上而下分析的文法条件名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -(6)满足 LL(1)文法的三个条件:.文法不含左递归,.对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即,若
4、 A 1|2|,|n 则 FIRST(i)FIRST(j)(ij).对文法中的每个非终结符A,若它存在某个候选首符集包含,则FIRST(i)FOLLOW(A)=i=1,2,.,n(7)因此我们可以把设计要求的文法首先改写为LL(1)文法ETEE+TE|TFTT*FT|F(E)|i 然后构造每个非终结符的FIRST和 FOLLOW 集合:FIRST(E)=(,i FIRST(E)=+,FIRST(T)=(,I FIRST(T)=*,FIRST(F)=(,I FOLLOW(E)=),#FOLLOW(E)=),#FOLLOW(T)=+,),#FOLLOW(T)=+,),#FOLLOW(F)=*,+,
5、),#确定改写后的文法为LL(1)文法;然后为每一个非终结符,构造相应的递归过程,过程的名字表示规则左部的非终结符;过程体按规则右部符号串的顺序编写。然后再为每个非终结符设计一个对应的函数,通过各函数之间的递归调用从而实现递归下降语法分析的功能。(8)编写 C+代码用到的变量和几个功能识别函数:.advance=0;/字符串小标,表示使IP 指向下一输入符号。.void E();/功能识别函数,表示规则 E-TE void E1();/功能识别函数,表示规则 E-+TE/void T();/功能识别函数,表示规则 T-FT void T1();/功能识别函数,表示规则 T-*FT/void F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年编译原理递归下降子程序课程设计报告 2022 编译 原理 递归 下降 子程序 课程设计 报告
限制150内