第7章LR分析法(10月31日修改).pptVIP

  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文档。上传文档
查看更多
第7章LR分析法(10月31日修改)

* 第7章 LR分析 Page * 本章小结 重点 LR(0)分析 SLR(1)分析 * 第7章 LR分析 Page * 本章小结 LR(0)分析 构造LR分析表 依据识别活前缀和可归前缀的DFA来构造 根据LR分析表来进行分析 什么时候移进? 什么时候规约?——形成句柄 只根据符号栈的内容就能确定句柄,不需要向右查看输入符号 LR(k)分析法通过活前缀来帮助确定句柄 * 第7章 LR分析 Page * 本章小结 构造识别文法活前缀的DFA: 方法一: 求出所有的可归前缀和活前缀之后,构造识别它们的NFA,再确定化为DFA 方法二: 求出文法的所有项目,按一定规则构造识别活前缀的NFA,再确定化为DFA,工作量大,不实用 方法三: 直接构造以LR(0)项目集为状态的DFA * 第7章 LR分析 Page * 本章小结 SLR(1)分析 基本思想: 对于LR(0)有冲突的项目集用向前查看输入符号串的一个符号的办法加以解决 解决方法: 对归约项目A→r?, 只有当输入符号a∈FOLLOW(A)才进行归约,缩小归约范围,有可能解决冲突。 * 第7章 LR分析 Page * 本章小结 判断是否为SLR(1)文法: 按照LR(0)方法把DFA构造出来; 看该DFA的状态里面,是否存在冲突; 若存在冲突,则看能否用SLR(1)的方法解决冲突。 看引起移近-归约冲突的产生式中,归约产生式左部非终结符的FOLLOW集与移进符号集是否不相交。 例如:I={X→α?bβ?Α→r??Β→δ?},其中b∈VT, 则要求: FOLLOW(A)∩FOLLOW(B)=Φ FOLLOW(A)∩b=Φ FOLLOW(B)∩b=Φ 即FOLLOW集与移进符号集不相交,则为SLR(1)文法 * * Page * 第7章 LR分析 以上对于构造识别文法活前缀的DFA: 方法一: 先由一个特例,求出所有的可归前缀和活前缀之后,构造识别它们的NFA,再确定化 方法二: 求出文法的所有项目,按一定规则构造识别活前缀的NFA,再确定化为DFA,工作量大,不实用 方法三: 直接构造以LR(0)项目集为状态的DFA * 第7章 LR分析 Page * 7.2.4 LR(0)分析表的构造 分析表的组成: 动作表(ACTION) : 表示当前状态下面临输入符应做的动作是移进、归约、接受或出错,面临的输入符只包含终结符和‘#’ 转换表(GOTO): 表示在当前状态下面临文法符号时应转向的下一个状态 把关于终结符部分的GOTO表和ACTION表重叠,也就是把当前状态下面临终结符应做的移进-归约动作和转向动作表示在一起 * Page * 第7章 LR分析 LR(0)分析表的构造算法 设已构造出LR(0)项目集规范族为C={ I0,I1,…,In }, 令项目集Ik对应的状态为k,含S’→?S项目的项目集对应的状态为初始状态 分析表的ACTION表和GOTO表构造步骤为: 若项目A→α?aβ∈Ik,a∈VT,且GO(Ik,a)=Ij,则置ACTION[k,a]=‘Sj’,移进 若项目A→α?Bβ∈Ik,B∈VN,且GO(Ik,B)=Ij,则置GOTO[k,B]=‘j’ 若项目A→α?∈Ik,且产生式A→α的编号为j,则对任何a(终结符和‘#’),置ACTION[k,a]=‘rj’,归约 若项目S’→S?∈Ik,则置ACTION[k,#]=‘acc’,接受 不能用上述方法填入的分析表的元素均应填上“报错标志”。 * Page * 第7章 LR分析 拓广文法G’: (0) S’→E (1) E→aА (2) E→bB (3) A→cА (4) A→d (5) B→cB (6) B→d 识别活前缀的DFA: S’→?E S’→E? E→a?A a E→b?B E b E→aA? A→c?A c A A→d? E→bB? B→c?B c B→d? A→cA? A B→cB? B d c d d B c d E→?aA E→?bB I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 A→?cAA→?d B→?cBB→?d A→?cAA→?d B→?cBB→?d * Page * 第7章 LR分析 ? ? ? ? a ACTION ? ? ? ? b ? ? c ? ? d ? ? ? ? # E GOTO A 状态 5 4 3 2 1 0 B LR(0)分析表 1 S2 S3 acc 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档