《编译原理课程教案》第4章3LR分析方法.ppt

《编译原理课程教案》第4章3LR分析方法.ppt

  1. 1、本文档共145页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理课程教案》第4章3LR分析方法.ppt

假定C={I0,I1,…,In},令每个Ik的下标k为分析表的状态,令含有[S?→·S, #]的Ik的k为分析器的初态。 构造LR(1)分析表的算法 动作ACTION和状态转换GOTO构造如下: 1. 若项目[A→?·a?, b]属于Ik且GO(Ik, a)=Ij, a为终结符,则置ACTION[k, a]为 “sj”。 2. 若项目[A→?·,a]属于Ik,则置ACTION[k, a]为 “rj”;其中假定A→?为文法G?的第j个产生式。 3. 若项目[S?→S·, #]属于Ik,则置ACTION[k, #]为 “acc”。 4. 若GO(Ik,A)=Ij,则置GOTO[k, A]=j。 5. 分析表中凡不能用规则1至4填入信息的空白栏均填上“出错标志”。 按上述算法构造的分析表,若不存在多重定义的入口(即,动作冲突)的情形,则称它是文法G的一张规范的LR(1)分析表。 使用这种分析表的分析器叫做一个规范的LR分析器。 具有规范的LR(1)分析表的文法称为一个LR(1)文法。 LR(1)状态比SLR多, LR(0)?SLR ? LR(1) ?无二义文法 例5.13 (5.10)的拓广文法G( S?) (0) S?→S (1) S→BB (2) B→aB (3) B→b 构建该文法的LR(1)项目集规范族,然后构造该文法的LR(1)分析表,判断字符串aabab是否是该文法的句子。 LR(1)的项目集C和函数GO a I3: B?a?B, a/b B??aB, a/b B? ?b, a/b I4: B? b ?, a/b b I7: B? b ?, # B I8: B? aB?, a/b a b I0: S’??S, # S??BB, # B??aB, a/b B? ?b, a/b S I1: S’?S ?, # B I2: S?B ? B, # B??aB, # B? ?b, # b B I5: S?BB?, # a I6: B?a?B, # B??aB, # B? ?b, # a I9: B? aB?, # B b LR(1)分 析表为: ACTION GOTO 状态 a b # S B 0 1 2 3 4 5 6 7 8 9 s3 s4 1 2 acc s6 s7 5 s3 s4 8 r3 r3 r1 s7 9 s6 r3 r2 r2 r2 a I3: B?a?B, a/b B??aB, a/b B? ?b, a/b I4: B? b ?, a/b b I7: B? b ?, # B I8: B? aB?, a/b a b I0: S’??S, # S??BB, # B??aB, a/b B? ?b, a/b S I1: S’?S ?, # B I2: S?B ? B, # B??aB, # B? ?b, # b B I5: S?BB?, # a I6: B?a?B, # B??aB, # B? ?b, # a I9: B? aB?, # B b 1. 若项目[A→?·a?, b]属于Ik且GO(Ik, a)=Ij, a为终结符,则置ACTION[k, a]为 “sj”。 2. 若项目[A→?·,a]属于Ik,则置ACTION[k, a]为 “rj”;其中假定A→?为文法G?的第j个产生式。 3. 若项目[S?→S·, #]属于Ik,则置ACTION[k, #]为 “acc”。 4. 若GO(Ik,A)=Ij,则置GOTO[k, A]=j。 a I3: B?a?B, a/b B??aB, a/b B? ?b, a/b I4: B? b ?, a/b b I7: B? b ?, # B I8: B? aB?, a/b a b I0: S’??S, # S??BB, # B??aB, a/b B? ?b, a/b S I1: S’?S ?, # B I2: S?B ? B, # B??aB, # B? ?b, # b B I5: S?BB?, # a I6: B?a?B, # B??aB, # B? ?b, # a I9: B? aB?, # B b 按上表对aabab进行分析 步骤 状态 符号 输入串 0 0 # aabab# 1 03 #a abab# 2 033 #aa bab# 3 0334 #aab ab# 4 0338 #aaB ab# 5 038 #aB ab# 6 02 #

文档评论(0)

2837587390 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档