第4章白底黑字.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文档。上传文档
查看更多
4.5.5 LALR(1)分析法 LR(1)分析法虽然可以解决SLR(1)方法所难以解决的移进—归约或归约—归约冲突,但是对同一个文法而言, 当搜索符不同时, 使得同一个项目集被分裂成多个项目集从而引起状态数的剧烈增长,导致时间和内存空间的急剧上升,使其应用受到一定的限制,为了克服LR(1)分析法的这种缺点,我们可以采用LALR(1)分析法。 4.5.5 LALR(1)分析法 LALR(1)分析法是界于SLR(1)分析法和LR(1)分析法之间的一种语法分析方法,这种分析法能解决SLR(1)分析法所不能解决的冲突动作,并且其分析表的状态个数与SLR(1)分析表的状态个数一样多。 LALR(1)分析法的基本思想是对LR(1)项目集规范族中将所有同心的项目集合并为一,以减少项目集个数。 4.5.5 LALR(1)分析法 所谓同心的LR(1)项目集是指在两个LR(1)项目集中, 除搜索符不同之外, 核心 部分是相同的。 例如,分析前例文法的LR(1)项目集族,可以发现同心集如下: 0. S→S 3. L →*R 1. S →L=R 4. L →i 2. S →R 5. R →L I0: S I1: S→S?,$ L I2:S→L?=R,$ R→L?,$ I3: S→R?,$ R I4: L→*?R,=/$ R→?L,=/$ L→?*R,=/$ L→?i,=/$ * I5: L→i?,=/$ i i S→?S,$ S→?L=R,$ S→?R,$ L→?*R,=/$ L→?i,=/$ R→?L,$ * I6: S→L=?R,$ L→?*R,$ L→?i,$ R→?L,$ I9:S→L=R?,$ I11: L→*?R,$ R→?L,$ L→?*R,$ L→?i,$ I10:R→L?,$ I12: L→i?,$ I7: L→*R?,=/$ I13:L→*R?,$ I8: R→L?,=/$ * LR(1)项目集族及转换函数 = R L R L * L i R 0. S′→S 1. S →L=R 2. S →R 3. L →*R 4. L →i 5. R →L i I4与I11,I5与I12,I7与I13,I8与I10它们俩 俩之间除了搜索符不同之外, “心”是相同的。将同心集合并为: 4.5.5 LALR(1)分析法 I4,11: L→*?R, =/$ R→?L, =/$ L→?*R, =/$ L→?i, =/$ I5,12: L→i?, =/$ I7,13: L→*R?, =/$ I8,10: R→L?, =/$ 4.5.5 LALR(1)分析法 我们看到合并同心集后的项目集其核心部分不变,仅搜索符合并。对合并同心集后的项目集的转换函数为GO(I,X)自身的合并,这是因为相同的心之转换函数仍属同心集。 例如 GO(I4,11, i)=GO(I4, i)∪GO(I11, i)= I5,12 GO(I4,11, R)=GO(I4, R)∪GO(I11, R)= I7,13 GO(I4,11, *)=GO(I4, *)∪GO(I11, *)= I4,11 4.5.5 LALR(1)分析法 合并同心集需着重指出的是若文法是LR(1)文法, 即它的LR(1)项目集中不存在动作冲突, 合并同心集后若有冲突也只可能是归约—归约冲突而不可能是移进—归约冲突。 假定LR(1)文法的项目集Ik与Ij为同心集,其中 Ik={ [A→α?, a1] [B→β?aγ, b1] } Ij={ [A→α?, a2 ] [B→β?aγ, b2] } 合并同心集后的项目集 Ikj={ [A→α?, a1/a2] [B→β?aγ, b1/b2] } 4.5.5 LALR(1)分析法 因为假设文法是LR(1)的, 在Ik中 {a1}∩{a}=Φ, 在Ij中 {a2}∩{a}=Φ, 显然 在Ik j中 ({a1}∪{a2})∩{a}=Φ 这也就是说合并同心集以后, 不可能有移进—归约冲突。 但可能有归约—归约冲突。例如, 可设想有两个同心的LR(1)项目集: 4.5.5 LALR(1)分析法 现在我们可以根据合并同心集后的项目集族构造文法的LALR(1)分析表,其构造方法如下: Ik={ [A→α?, a] [B→α?, b] } Ij={ [A→α?, b ] [B→α?, a] } 合并同心集后的项目集 Ikj={ [A→α?, a/b] [B→α?, a/b] } 合并后产生了归约—归约冲突。 4.5.

文档评论(0)

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

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

1亿VIP精品文档

相关文档