欢迎来到毕设资料网! | 帮助中心 毕设资料交流与分享平台
毕设资料网
全部分类
  • 毕业设计>
  • 毕业论文>
  • 外文翻译>
  • 课程设计>
  • 实习报告>
  • 相关资料>
  • ImageVerifierCode 换一换
    首页 毕设资料网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1397770       资源大小:172KB        全文页数:12页
    • 资源格式: DOC        下载积分:100金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    下载资源需要100金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

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

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

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

    3、一大堆语义工作(指中间代码产生工作和各种表格的簿记工作)推倒 重来。这些事情既麻烦又费时间,所以,最好应设法消除回溯。 第三,在自上而下分析过程中,当一个非终结符用某一候选匹配成功时,这种成功可能 仅是暂时的。 第四,当最终报告分析不成功时,我们难于知道输入串中出错的确切位置。 最后,由于带回溯的自上而下分析实际上采用了一种穷尽一切可能的试探法,因此,效 率很低,代价极高。严重的低效使得这种分析法只有理论意义,而在实践上价值不大。 由于上述原因, 我们需要把原算术表达式改写为 LL(1)文法, LL(1)文法的文法条件如下: 文法不含左递归。 对于文法中每一个非终结符 A 的各个产生式的候选首

    4、集符两两不相交。即,若 n A| 21 ,则 ji FIRSTFIRST ji 对 文 法 中 的 每 个 非 终 结 符A , 若 它 存 在 某 个 候 选 首 符 集 包 含 , 则 AF O L L O WAF I R S T LL(1)中的第一个 L 表示从左到右扫描输入串,第二个 L 表示最左推导,1 表示分析时每 2 一步只需向前查看一个符号。当一个文法满足 LL(1)条件时,我们就可以为它构造一个不带 回溯的自上而下分析程序,这个分析程序是由一组递归过程组成的,每个过程对应文法的一 个非终结符。这样的一个分析程序称为递归下降分析器。 2、概要设计 编程实现给定算术表达式的递归下

    5、降分析器。 算术表达式文法如下: EE+T|E-T|T TT*F|T/F|F F(E)| i 首先改写文法为 LL(1)文法;然后为每一个非终结符,构造相应的递归过程,过程的名 字表示规则左部的非终结符;过程体按规则右部符号串的顺序编写。 上述算法表达式文法属于比较典型的递归下降语法分析。需要先将原算术表达式方法改 写为 LL(1)文法为: ETE E+TE|-TE| TFT T*FT|/FT| F(E)| i 然后再为每个非终结符设计一个对应的函数,通过各函数之间的递归调用从而实现递归 下降语法分析的功能。 具体方法为: (1)当遇到终结符 a 时,则编写语句 If(当前读到的输入符号=a)

    6、读入下一个输入符号 (2)当遇到非终结符 A 时,则编写语句调用 A()。 (3)当遇到 A 规则时,则编写语句 If(当前读到的输入符号不属于 Follow(A) error() (4)当某个非终结符的规则有多个候选式时,按 LL(1)文法的条件能唯一地选择一个候 选式进行推导. 递归下降子程序流程图: 3 图 1 递归下降子程序流程图 3、详细设计 #include char inputstream50; /存储输入句子 int temp=0; /数组下标 4 int right; /判断输出信息 void e(); void e1(); void t(); void t1(); void f(); void main() right=1; coutinputstream; cout“-“endl; coutendl; cout“开始进行语法分析


    注意事项

    本文(编译原理课程设计---LL(1)递归下降分析器)为本站会员(毕****文)主动上传,毕设资料网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请联系网站客服QQ:540560583,我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们
    本站所有资料均属于原创者所有,仅提供参考和学习交流之用,请勿用做其他用途,转载必究!如有侵犯您的权利请联系本站,一经查实我们会立即删除相关内容!
    copyright@ 2008-2025 毕设资料网所有
    联系QQ:540560583