编译原理课程设计_ll(1)递归下降分析器

编译原理课程设计_ll(1)递归下降分析器

ID:2154684

大小:183.00 KB

页数:12页

时间:2017-11-14

编译原理课程设计_ll(1)递归下降分析器_第1页
编译原理课程设计_ll(1)递归下降分析器_第2页
编译原理课程设计_ll(1)递归下降分析器_第3页
编译原理课程设计_ll(1)递归下降分析器_第4页
编译原理课程设计_ll(1)递归下降分析器_第5页
资源描述:

《编译原理课程设计_ll(1)递归下降分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、仲恺农业技术学院编译原理课程设计课程设计题目:LL(1)递归下降分析器姓名:院(系):专业班级:学号:指导教师:设计日期:10目录1、需求分析12、概要设计23、详细设计34、测试分析85、用户手册96、课程总结97、参考文献1010题目:LL(1)递归下降分析器1、需求分析语法分析是编译过程的核心部分。语法分析器的任务是识别和处理比单词更大的语法单位。如:程序设计语言中的表达式,各种说明和语句乃至全部源程序,指出其中的语法错误;必要时,可生成内部形式,便于下一阶段处理。我们知道,语言的语法结构

2、是用上下文无关文法描述的。按照语法分析树的建立方法,我们可以粗略地把语法分析办法分成两类,一类是自上而下分析,另一类是自下而上分析法。而自上而下这种方法是带“回溯”的,且存在许多困难和缺点。首先,是文法的左递归性问题。一个文法是含有左递归的,如果存在非终结符P且,含有左递归的文法使上述的自上而下的分析过程陷入无限循环。即,当试图用P去匹配输入串时,我们会发现,在没有识别任何输入符号的情况下,有得重新要求P去进行新的匹配。因此,使用自上而下分析法必须消除文法的左递归性。其次,由于回溯,就碰到一大堆

3、麻烦问题。如果我们走了一大段错路,最后必须回头,那么,就应把已经做的一大堆语义工作(指中间代码产生工作和各种表格的簿记工作)推倒重来。这些事情既麻烦又费时间,所以,最好应设法消除回溯。第三,在自上而下分析过程中,当一个非终结符用某一候选匹配成功时,这种成功可能仅是暂时的。第四,当最终报告分析不成功时,我们难于知道输入串中出错的确切位置。最后,由于带回溯的自上而下分析实际上采用了一种穷尽一切可能的试探法,因此,效率很低,代价极高。严重的低效使得这种分析法只有理论意义,而在实践上价值不大。由于上述原

4、因,我们需要把原算术表达式改写为LL(1)文法,LL(1)文法的文法条件如下:文法不含左递归。对于文法中每一个非终结符A的各个产生式的候选首集符两两不相交。即,若,则对文法中的每个非终结符A,若它存在某个候选首符集包含ε,则LL(1)中的第一个L表示从左到右扫描输入串,第二个L10表示最左推导,1表示分析时每一步只需向前查看一个符号。当一个文法满足LL(1)条件时,我们就可以为它构造一个不带回溯的自上而下分析程序,这个分析程序是由一组递归过程组成的,每个过程对应文法的一个非终结符。这样的一个分析

5、程序称为递归下降分析器。2、概要设计编程实现给定算术表达式的递归下降分析器。算术表达式文法如下:E-->E+T

6、E-T

7、TT-->T*F

8、T/F

9、FF-->(E)

10、i首先改写文法为LL(1)文法;然后为每一个非终结符,构造相应的递归过程,过程的名字表示规则左部的非终结符;过程体按规则右部符号串的顺序编写。上述算法表达式文法属于比较典型的递归下降语法分析。需要先将原算术表达式方法改写为LL(1)文法为:E-->TE’E’-->+TE’

11、-TE’

12、εT-->FT’T’-->*FT’

13、/FT’

14、εF-

15、->(E)

16、i然后再为每个非终结符设计一个对应的函数,通过各函数之间的递归调用从而实现递归下降语法分析的功能。具体方法为:(1)当遇到终结符a时,则编写语句If(当前读到的输入符号==a)读入下一个输入符号(2)当遇到非终结符A时,则编写语句调用A()。(3)当遇到A-->ε规则时,则编写语句If(当前读到的输入符号不属于Follow(A))error()(4)当某个非终结符的规则有多个候选式时,按LL(1)文法的条件能唯一地选择一个候选式进行推导.递归下降子程序流程图:10图1递归下降子程序流

17、程图3、详细设计#includecharinputstream[50];//存储输入句子inttemp=0;//数组下标10intright;//判断输出信息voide();voide1();voidt();voidt1();voidf();voidmain(){right=1;cout<<"---------------------------------------------------"<

18、>inputstream;cout<<"---------------------------------------------------"<TE'"<

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

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

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