7-LR分析3.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分析3

第七章 LR分析 广东工业大学计算机学院 本课内容 7.5 LALR(1)分析 7.6 二义性文法在LR分析中的应用 LR(1)方法的优缺点 LR(1)分析方法的优点:计算方法比较确切,适应的文法类型广,解决了无效规约的问题。 LR(1)分析方法的缺点:由于它的构造对某些同心集的分裂可能对状态数目引起剧烈的增长,从而导致存储容量的急剧增加。 为了克服LR(1)的这种缺点,可以对LR(1)项目集规范族合并同心集。 若合并同心集后不产生新的冲突,则为LALR(1)项目集,其状态个数与LR(0) 、SLR(1)相同。 LR(1)分析的问题——同心集 对于以下文法,可知I3和I6,I4和I7,I8和I9是同心集。 合并同心集举例 例如:P146例子的项目集可发现同心集如下: I3: B→a?B, a/b     I6:B→a?B, #     B→?aB, a/b        B→?aB, #     B→?b, a/b        B→?b, # I4: B→b?, a/b      I7:B→b?, # I8: B→aB?, a/b     I9:B→aB?, # 将同心集合并: I3, I6:B→a?B, a/b/#      B→?aB, a/b/#      B→?b, a/b/# 同心集合并后仍不包含冲突,因此该文法满足LALR(1) 要求。 合并同心集需要说明的问题 合并同心集有几个问题需要说明: (1) 同心集是指心相同的项目集合并在一起,因此同心集合并后,“心”仍相同,只是向前搜索符集合变为各同心集向前搜索符集合的并集。   (2) 合并同心集后转换函数(P133)为自动合并,如例中I3和I6为同心集,它们的转换函数分别为:   I3: GO(I3,a) = I3     GO(I3,b) = I4     GO(I3,B) = I8 然而,I3和I6,I4和I7,I8和I9分别都为同心集。 合并同心集需要说明的问题(续1) (3) 若文法是LR(1)文法,合并同心集后至多只可能产生归约-归约冲突,而不可能产生移进-归约冲突。 证明:不妨假设某LR(1)文法的项目集Ik与Ij为同心集:   Ik:A→α?,u1     B→β?aγ, b 合并同心集: Ik, Ij: A→α?, u1/u2     B→β?aγ, b/c 因为文法是LR(1)的,而{u1}∩{a} = ?和{u2}∩{a} = ?,显然合并同心集后,搜索符集:({u1}∪{u2})∩{a} = ? ∴不可能产生移进-归约冲突。 合并同心集需要说明的问题(续2) (3) 若文法是LR(1)文法,合并同心集后至多只可能产生新的归约-归约冲突,而不可能产生新的移进-归约冲突。 证明:但有可能产生新的归约-归约冲突。举例:   Ik:S→be?d,#     A→e?, a B→e?, d 合并同心集: Ik:S→be?d,#     A→e?, a/d B→e?, d/a 此时产生了新的归约-归约冲突。 构造LALR(1)分析表的一般步骤 要构造一个文法的LALR(1)分析表,应使用以下步骤: (1) 首先构造该文法的LR(1)项目集族(可能含有同心集)。 (2) 若LR(1)项目集族中不含任何冲突,则合并同心集。 (3)若合并同心集后得到的项目集规范族不产生归约-归约冲突,则该文法便是LALR(1)文法。 ——然后可以根据合并同心集后的项目集族构造该文法的LALR(1)分析表,其构造步骤与LR(1)分析表相同。 构造LALR(1)分析表举例 对于文法G’[S’]: (0) S’ → S (1) S → BB (2) B → aB (3) B → b 求出LALR(1)项目集规范族: I0: S’ → ?S, # S → ?BB, # B → ?aB, a/b B → ?b, a/b I1: S’ → S?, # I2: S → B?B, # B → ?aB, # B → ?b, # I3,6: B → a?B, a/b B → ?aB, a/b B → ?b, a/b/# 合并同心集需要说明的问题(续1) (4) 合并同心集后对某些错误发现的时间会产生推迟现象。 举例:对于上例中的文法G[S’]: (0) S’ → S (1) S → BB (2) B → aB

文档评论(0)

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

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

1亿VIP精品文档

相关文档