- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 4.7.4 LALR分析表的构造 LALR(lookahead-LR)技术。这种方法在实际中是经常使用的。 ????定义4.14 如果两个LR(1)项目集去掉搜索符之后是相同的,则称这两个项目集具有相同的心(core)。 一个心就是一个LR(0)项目集。 ???定义4.15 除去初态项目集外,一个项目集的核(kernel)是由此集中那些圆点不在最左端的项目组成。LR(1)初态项目集的核含有也仅含有[S→·S,$]。 [S′??S,$] [S??CC,$] [C??cC,c/d] [C??d,c/d] I0 S [S′?S?,$] I1 C [S?C?C,$] [C??cC,$] [C??d,$] I2 c [C?c?C,c/d] [C? ? cC,c/d] [C??d,c/d] I3 d [C?d?,c/d] I4 C [S?CC ?,$] I5 c [C?c?C,$] [C??cC,$] [C??d,$] I6 C [C?cC ?,$] I9 d [C?d?,$] I7 c d c C [C?cC ?,c/d] I8 d 改进思路: 合并同心集可达到缩小构造分析表的状态数目;利用核代替项目集可以达到缩小项目集所占用的存储空间。介绍两种方法: 第一种方法:对于G,构造LR(1)项目集规范族(DFA),然后,合并同心集,若合并后的同心集中没有移进归约冲突,则用其构造LR分析表, 这种分析表称作LALR分析表。 图4.27中 I3 和 I6 I4和I7 I8和I9 [S′??S,$] [S??CC,$] [C??cC,c/d] [C??d,c/d] I0 S [S′?S?,$] I1 C [S?C?C,$] [C??cC,$] [C??d,$] I2 c [C?c?C,c/d] [C? ? cC,c/d] [C??d,c/d] I3 d [C?d?,c/d] I4 C [S?CC ?,$] I5 c [C?c?C,$] [C??cC,$] [C??d,$] I6 C [C?cC ?,$] I9 d [C?d?,$] I7 c d c C [C?cC ?,c/d] I8 d c [C?c?C,c/d/$] [C??cC,c/d/$] [C??d,c/d/$] [C?d?,c/d/$] I47 [C?cC ?,c/d/$] I89 I36 I47 讨论: 1. 由于go(I,X)仅仅依赖于I的心,因此 LR(1) 项目集合并后的转换函数go(I,X)随 自身的 合并而得到。 2. 动作action应当进行修改,使得能反映各被 合并集合的既定动作。 3.??把同心的项目集合并为一,有可能导致冲突, 这种冲突不会是移进- 归约冲突;但可能引起 归约-归约冲突。 Ik:{[A???,u1] [B???a?,b] } a?u1=? Ij:{[A???,u2] [B???a?,c] } a?u2=? Ikj:[A???,u1/u2] [B???a?,b/c] a?{u1, u2}=? 例:下面文法是LR(1)的,但不是LALR(1)的。 S′ ? S S? aAd ?bBd ? aBe ?bAe A ?c B ?c [S′ ? ?S,$] [S ? ?aAd, $] [S ? ?bBd, $] [S ? ?aBe, $] [S ? ?bAe, $] [S′ ? S ? ,$] [S? a ? Ad, $] [S ? a ? Be, $] [A ? ?c, d] [B ? ?c, e] a S [S? b? Bd, $] [S ? b ? Ae, $] [A ? ?c, e] [B ? ?c, d] b A [S? a A ? d, $] B [S ? a B ? e, $] c [A ? c ?, d] [B ? c ?, e] [A ? c ?, e] [B ? c ?, d] c LR(1)和LALR(1)分析上的差别 输入:ccd$ LR: 0 c 3 c 3 d 4 报错 LALR: 0 c 36 c 36 d 47 0 c 36 c 36 C 89 0 c 36 C 89
文档评论(0)