网站大量收购闲置独家精品文档,联系QQ:2885784924

编译原理精品教学课件(华南理工大学)第六章LR分析法.pptVIP

编译原理精品教学课件(华南理工大学)第六章LR分析法.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.3 SLR(1)分析(Simple LR(1)) 项目集中的冲突 一个项目集中存在下列情况称为项目冲突: 移进—归约冲突 移进项目A→α?aβ和归约项目B→r?同在一个项目集中,当面临输入符a时,不能确定移进a还是把r归约为B; 归约—归约冲突 归约项目A→β?和归约项目B→r?同在一个项目集中,不管面临什么输入符都不能确定把β归约为A还是把r归约为B。 一个文法的LR(0)项目集规范族中的项目集不存在移进—归约冲突,也不存在归约—归约冲突时,称该文法为LR(0)文法。 例:文法G’ (0) S’→S (1) S→rD (2) D→D,i (3) D→i 识别文法活前缀的DFA: S’→?S S’→S? S→r?D r S S→rD? D→D?,i D D→i? D→D,?i , i S→?rD I0 I1 I2 I3 I4 I5 D→?D,i D→?i D→D,i? i I6 在项目集I3中S→rD?为归约项目,D→D?,i为移进项目, 存在移进-归约冲突,该文法不是LR(0)文法 2. 解决冲突的SLR(1)方法 基本思想: 对于LR(0)有冲突的项目集用向前查看输入符号串的一个符号的办法加以解决 解决方法: 对归约项目A→r?, 只有当输入符号a∈FOLLOW(A)才进行归约,缩小归约范围,有可能解决冲突。 例:文法G’ (0) S’→S (1) S→rD (2) D→D,i (3) D→i 识别文法活前缀的DFA: S’→?S S’→S? S→r?D r S S→rD? D→D?,i D D→i? D→D,?i , i S→?rD I0 I1 I2 I3 I4 I5 D→?D,i D→?i D→D,i? i I6 Follow集 S’ # S # D # , 对项目集I3,若当前输入符为‘#’时,进行归约,若当前输入符为‘,’,进行移进操作,冲突得以解决 SLR(1)可解决冲突的情况: 例:一个LR(0)规范族中项目集I含有冲突项目I={X→α?bβ?Α→r??Β→δ?}, 其中b∈VT, 如果FOLLOW(A)和FOLLOW(B)互不相交,且不含b,则当状态I面临某输入符a时,可采用下列动作: 若a=b,则移进; 若a∈FOLLOW(A),则用产生式A→r归约; 若a∈FOLLOW(B),则用产生式B→δ归约; 此外,报错。 如果一个文法的LR(0)项目集规范族中某些项目集所含有的动作冲突都能用SLR(1)方法解决,则称这个文法为SLR(1)文法 SLR(1)分析表的构造算法 与LR(0)分析表的构造类似,仅在含有冲突的项目集中分别进行处理。 改进的SLR(1)方法: 对所有的归约项目仅对当前输入符号包含在该归约项目左部非终结符的FOLLOW集中,才采取归约动作。 改进的SLR(1)分析表的构造方法: 设已构造出以LR(0)项目集为状态的DFA,DFA的每个状态对应成为分析表的状态,含S’→?S项目的状态为初始状态 1 分析表的ACTION部分的构造: 若项目A→α?aβ∈k, a∈VT,且GO(k,a)=j, 则置ACTION[k,a]=‘Sj’; 若项目A→α?∈k,且产生式A→α的编号为j, 则对任何a∈FOLLOW(A),置ACTION[k,a]=‘rj’; 若项目S’→S?∈k,则置ACTION[k,#]=‘acc’; 2 分析表的GOTO部分的构造 若项目A→α?Bβ∈k, B∈VN,且GO(k,B)=j, 则置GOTO[k,B]=‘j’; 例 文法G’:(0) S’→S (1) S→rD (2) D→D, i (3) D→i FOLLOW(S’)={#} FOLLOW(S)={#} FOLLOW(D)={# ,} S’→?S S’→S? S→r?D r S S→rD? D→D?,i D→i? D→D,?i , i S→?rD I0 I1 I2 I3 I4 I5 D→?D,i D→?i D→D,i? i I6 D 状态 ACTION GOTO r , i # S D 0 S2 ? ? ? 1 ?1 ? ? acc 2 ? S4 ? 3 3 S5 ? r1 4 r3 ? r3 5 ? S6 ? 6? r2 ? r2 6.4 LR(1)、LALR(1)分析思想 仍有许多文法构造的以LR(

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档