第4篇LR分析法.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(4) LR(0)分析表的构造 若对于一个文法G的拓广文法G’的LR(0)项目集规范族中的每个项目集,不存在移进项目和归约项目同时并存或多个归约项目同时并存,则称G为LR(0)文法。 为了节省存储空间,把关于终结符部分的GOTO表和ACTION表重叠,也就是把当前状态下面临终结符应做的移进-归约动作和转向动作一起表示。 对LR(0)文法,其分析表的构造算法如下: 设LR(0)项目集规范族为C={I0,I1,…,In },令项目集Ik对应的状态为k,含S’→?S项目的项目集对应的状态为初始状态,分析表的ACTION表和GOTO表构造步骤为: 若项目A→α?aβ∈Ik,a∈VT,且GO(Ik,a)=Ij,则置ACTION[k,a]=‘Sj’ 若项目A→α?Bβ∈Ik,B∈VN,且GO(Ik,B)=Ij,则置GOTO[k,B]=‘j’ 若项目A→α?∈Ik,且产生式A→α的编号为j,则对任何a(终结符和‘$’),置ACTION[k,a]=‘rj’ 若项目S’→S?∈Ik,则置ACTION[k,$]=‘acc’ 不能用上述方法填入的分析表的元素均应填上“报错标志”。 拓广文法G’: (0) S’→E (1) E→aА (2) E→bB (3) A→cА (4) A→d (5) B→cB (6) B→d 识别活前缀的DFA: S’→?E S’→E? E→a?A a E→b?B E b E→aA? A→c?A c A A→d? E→bB? B→c?B c B→d? A→cA? A B→cB? B d c d d B c d E→?aA E→?bB I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 A→?cAA→?d B→?cBB→?d A→?cAA→?d B→?cBB→?d 10 ? ? ? ? ? a ACTION ? ? ? ? ? b ? ? c ? ? d ? ? ? ? ? $ E GOTO A 状态 11 9 8 7 6 5 4 3 2 1 0 B LR(0)分析表 1 S2 S3 acc 4 S5 S6 7 S8 S9 r1 r1 r1 r1 r1 10 S5 S6 r4 r4 r4 r4 r4 r2 r2 r2 r2 r2 11 S9 S8 r6 r6 r6 r6 r6 r3 r3 r3 r3 r3 r5 r5 r5 r5 r5 (0) S’→E (1) E→aА (2) E→bB (3) A→cА (4) A→d (5) B→cB (6) B→d 输入串bccd$的分析过程 步骤 状态栈 符号栈 输入串 ACTION GOTO 1 ? 2 ? 3 ? 4 ? 5 6 7 8 9 0 $ bccd$ S3 03 $b ccd$ S8 038 $bc cd$ S8 0388 $bcc d$ S9 03889 $bccd $ $ $ $ $ r6 11 0388 $bcc r5 11 038 $bc r5 7 03 $b r2 1 0 $ acc B (11) B (11) B 7 E 1 写出给定文法G的拓广文法G’ 写出文法G’的LR(0)项目集(初态) 利用CLOSURE和GOTO函数,求出相应的LR(0)项目集规范族C; 构造识别该文法全部活前缀的DFA; 根据算法构造LR(0)分析表; (5) 构造LR(0)分析表步骤小结 当一个文法是LR(0)文法时,才可构造出无冲突的LR(0)分析表。 LR(0)分析器的特点是不需向前查看输入符号就能归约,不管下一个输入符号是什么都可以立即进行归约而不发生错误。 4.5.3 SLR(1)分析 项目集中的冲突 移进—归约冲突 移进项目A→α?aβ和归约项目B→r?同在一个项目集中,当面临输入符a时,不能确定移进a还是把r归约为B; 归约—归约冲突 归约项目A→β?和归约项目B→r?同在一个项目集中,不管面临什么输入符都不能确定把β归约为A还是把r归约为B。 一个文法的LR(0)项目集规范族中的项目集不存在移进—归约冲突,也不存在归约—归约冲突时,称该文法为LR(0)文法。 文法G

文档评论(0)

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

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

1亿VIP精品文档

相关文档