第4章LR分析方法分析.ppt

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 构造LALR分析表的算法: (1)构造LR(1)项目集规范族,C={I0,I1,…,In}。 (2)合并所有的同心集,得到LALR(1)的项目集族C={J0,J1,…,Jm}。含有项目[S→·S,#] 为初态。 (3)由C‘构造动作(action)表。 ① 若[A→α·aβ,b]∈Jk,且GO(Jk,a)=Jj,其中a∈VT,则置action[k,a]=Sj, ② 若项目[A→α·,a]∈Jk,其中a∈VT,则置action[k,a]=rj,rj的含义是按产生式A→α进行归约 ③ 若项目[S→S·,#]∈Ik,则置action[k,#]=acc,表示分析成功,接受。 (4)goto表的构造。若不是同心集的项目集,转换函数的构造与LR(1)的相同;假定Ii1,Ii2,…,Iin是同心集,合并后的新集为Jk,转换函数GO(Ii1,X),GO(Ii2,X),…,GO(Iin,X)也为同心集,将其合并后记作Ji,因此,有GO(Jk,X)= Ji,所以当X为非终结符时,GO(Jk,X)=Ji,则置goto[k,X]=i,表示在k状态下遇到非终结符X时,把X和i分别移到文法符号栈和状态栈。 (5)分析表中凡不能用(3)、(4)填入信息的空白均填上“出错标志”。 该文法的LR(1)项目集规范族 例:文法 (0)S→S (1)S→BB (2)B→bB (3)B→a LR(1)分析表为: 状 态 action goto b a # S B 0 S3 S4 1 2 1 acc 2 S6 S7 5 3 S3 S4 8 4 r3 r3 5 r1 6 S6 S7 9 7 r3 8 r2 r2 9 r2 I3和I6,I4和I7,I8和I9分别为同心集,将同心集合并后为: I36:B→a·B,a/b/# B→·aB,a/b/# B→·b,a/b/# I47:B→b·,a/b/# I89:B→aB·,a/b/# 同心集合并后仍不包含冲突,因此该文法是LALR文法。 得到LALR分析表: 状态 action goto b a # S B 0 S3,6 S4,7 1 2 1 acc 2 S3,6 S4,7 5 3,6 S3,6 S4,7 8,9 4,7 r3 r3 r3 5 r1 8,9 r2 r2 r2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * 前述的例子中,是已经拓广了的文法 1. S ?·E 2. S ?E · 3. E ?·aA 4. E ?a·A 5. E ?aA· 6. A ? · cA 7. A ?c · A 8. A ?cA · 9. A ?·d 10. A ? d· 11. E ?·bB 12. E ? b·B 13. E ? bB· 14. B ?·cB 15. B ?c·B 16. B ?cB · 17. B ?·d 18. B ? d· 初始时,设置 C = { Closure( {S ?·E} ) }, 是一个状态,即 C ={ {S?·E, E ?·aA , E ?·bB } } 再根据C中的每个状态的go函数,求出更多的状态,直到状态数不再增多为止 例:设文法G为: E ?aA| bB A ?cA|d B ?cB|d 求该文法的LR(0)分析表。 (0) S ?E (1) E ?aA (2) E ?bB (3) A ?cA (4) A ?d (5) B ?cB (6) B ?d 第1步:拓广文法,并对产生式给予序号: 第2步:写出拓广后的文法的项目集: 1. S ? · E 2. S ?E · 3. E ? · aA   4. E ?a · A 5. E ?aA ·   6. E ? · bB 7. E ?b · B 8. E ?bB · 9. A ? · cA 10. A ?c · A 11. A ?cA ·   12. A ? · d 13. A ?d · 14. B ? · cB 15. B ?c · B 16. B ?cB · 17. B ? · d  18. B ?d · 第3步:从S?·E开始求项目集规范族 由 S0 = {S ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档