递归下降语法分析程序设计之欧阳美创编.docx

递归下降语法分析程序设计之欧阳美创编.docx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 编译方法实验报告 时间: 创作:欧阳美 实验名称:简单的语法分析程序设计 实验要求 1. 2. 3. 4. 5. 功能:对简单的赋值语句进行语法分析 随机输入赋值语句,输出所输入的赋值语句与相应的四元式 采用递归下降分析程序完成(自上而下的分析) 确定各个子程序的功能并画出流程图 文法如下: 编码、调试通过 采用标准输入输出方式。输入输出的样例如下: 【样例输入】 x:二 a+b*c/d(e+f) 【样例输出】 (说明,语句和四元式之间用 5 个空格隔开) (*,b,c,Tl)(/,Tl,d,T2)(+,a,T2,T3) (*,b,c,Tl) (/,Tl,d,T2) (+,a,T2,T3) (+,e,f,T4) (,T3,T4,T5) T2 :=Tl/d T3 :=a+T2 T4 :二 e+f T5 :二 T3T4 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 x:=T5 (:二,T5,,x) 【样例说明】程序除能够正确输出四元式外,当输入的表达 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 式错误时,还应能检测出语法错误,给出相应错误提示。 6. 设计 35 个赋值语句测试实例,检验程序能否输出正确的四元 式;当输入错误的句子时,检验程序能够给出语法错误的相 应提 示信息。 7. 报告内容包括: 递归程序的调用过程,各子程序的流程图和总控流程图,详 细设 计, 35 个测试用例的程序运行截图及相关说明,有详细 注释的程 序代码清单等。 目录 1. 语法分析递归下降分析算法 5 1. 1 背景知识 5 1.2 消除左递归 6 2. 详细设计及流程图 6 2. 1 函数 void V() // V a.| b c | d e. . . | z6 2.2 函数 void A() // A V :=E7 2. 3 函数 void E() //E TE7 2. 4 函数 void T() 2. 4 函数 void T() //E‘ +TE|TE* |null8 2. 5 函数 void El () // 「〉*FT* |/FT* null9 2. 6 函数 void T1 () 3. 测3试.1图1及9截图 9 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 3. 2 测试用例2 及截图 10 3. 3 测试用例 3 及截图 11 代码清单 11 1. 语法分析递归下降分析算法 1. 1 背景知识 无回溯的自上向下分析技术可用的先决条件是:无左递归 和无 回溯。 无左递归:既没有直接左递归,也没有间接左递归。 无回溯:对于任一非终结符号 U 的产生式右部 xl | x2 | ..-1 xn,其 对应的字的首终结符号两两不相交。 如果一个文法不含回路,也不含以£为右部的产生式,那 么可 以通过执行消除文法左递归的算法消除文法的一切左递归 〔改写后 的文法可能含有以£为右部的产生式〕。 文法的左递归消除算法: 1、将文法 G 的所有非终结符排序为 U1 ,U2,… ,Un; 2 、For〔i=l; i++; i2n〕 { for jf 1 to 订 把产生式 Ui-Ujci 替换成 Ui-Bla S 2 a ... | P m a ; 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 欧阳美创编 2021.01.01 其中: Ujf 0 1 02 |- | Pm 消除 Ui 产生 式中的直接左递归; } 3. 化简改写之后的文法,删除多余产生式。 文法的直接左递归消除公式: 直接左递归形式: U—Ux y; 其中: x, ye (VNUVT) * , y 不以 U 打

文档评论(0)

小石头 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档