程序设计语言与编译ppt课件_7.2 回溯分析法.pptxVIP

程序设计语言与编译ppt课件_7.2 回溯分析法.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第七章语法分析第一节语法分析概述第二节回溯分析法第三节递归下降分析法第四节预测分析法

文法G(S): S→xAy A→ab A→a输入串xay的分析过程:实例SxyAaabxay

文法G(S): S→Sa S→b输入串baa的分析过程:实例SSabSabbbaa

回溯分析法回溯分析法实际上是一种试探的方法。当遇到多个候选产生式时,可以选择任意一个进行尝试,如果尝试失败,则回溯到试探前的状态,继续尝试其它候选。回溯分析法的分析效率是非常低的。特别是当匹配失败发生在多级试探后,逐级回溯的开销是令人难以忍受的。

引起回溯的原因1. 存在公共左因子 A→αβ1|αβ22. 存在左递归 直接左递归:A→Aα 间接左递归:A→Bα和B→Aβ3. 其它 A→α|ε A→Aα|Bβ

简单形式: A→αβ1|αβ2|δ改写为: A→αB|δ B→β1|β2通用形式: A→αβ1|αβ2|...|αβm|δ1|δ2|...|δn改写为: A→αB|δ1|δ2|...|δn B→β1|β2|...|βm消除公共左因子

文法: S→xAy

A→ab|a改写为: S→xAy A→aB B→b|ε实例

简单形式: A→Aα|β改写为: A→βA A→αA|ε通用形式: A→Aα1|Aα2|…|Aαm|β1|β2|…|βn改写为: A→β1A|β2A|…|βnA A→α1A|α2A|…|αmA|ε消除直接左递归

存在间接左递归的产生式: A1→A2α A2→A3β A3→A1γ消除间接左递归的方法: 将A3→A1γ改写为A3→A2αγ 将A3→A2αγ改写为A3→A3βαγ 将A3→A3βαγ中的直接左递归消除消除间接左递归A1A2A3A3→βαγA3|…A3→A2αγA3→A3βαγ

存在间接左递归的产生式: A1→… … Ai→Aj… … An→…符合ij这个条件的取值范围: i:from2ton j:from1toi-1 消除间接左递归A1AjAi…An……i?j

1. 将所有非终结符按一定的顺序排列(设为A1,A2,…,An);2. fori=2tondo forj=1toi-1do 2.1 如果有产生式:Ai?Ajα,且Aj?β1|β2|…|βk 则将其改写为:Ai?β1α|β2α|…|βkα 2.2 消除新引入的直接左递归3. 去掉无效的符号和产生式。消除间接左递归算法

文法G(S): S→Qc|c Q→Rb|b R→Sa|a方法一:按R、Q、S排列,即A1=R,A2=Q,A3=S。方法二:按S、Q、R排列,即A1=S,A2=Q,A3=R。实例

按R、Q、S排列,即A1=R,A2=Q,A3=S。遍历所有符合Ai?Aj…(其中ij)形式的产生式,分别进行改写。第1步:i=2、j=1时,有Q→Rb,需要改写。第2步:i=3、j=1时,不存在S→R…形式的产生式。方法一R→Sa|aQ→Rb|bS→Qc|cR→Sa|aQ→Sab|ab|bS→Qc|c

第3步:i=3、j=2时,有S→Qc,需要改写。第4步:消除直接左递归方法一R→Sa|aQ→Sab|ab|bS→Sabc|abc|bc|cR→Sa|aQ→Sab|ab|bS→Qc|cR→Sa|aQ→Sab|ab|bS→Sabc|abc|bc|cR→Sa|aQ→Sab|ab|bS→abcS|bcS|cSS→abcS|ε

第5步:去掉无效的符号和产生式方法一R→Sa|aQ→Sab|ab|bS→

文档评论(0)

Kaiser + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档