- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.3.5 LALR分析表的构造 对 LR(1) ☆来说, 存在着某些状态, 这些状态除向前搜索符不同外, 其核心部分都是相同的. 同心集: 两个LR(1)项目集具有相同的心, 即除去搜索符之后, 这两个集合是相同的。 能否将核心部分相同的诸状态合并为一个状态? 这种合并是否会产生冲突? LALR方法 : 在LR(1)项目集规范族基础上, 合并同心集. 合并同心集 构造 LALR(1)分析表算法 (3) 从C? 构造ACTION表 ①若[A→α·aB, b]∈Jk ,且GO(Jk, a)= Jj, 则置ACTION[k, a]为 sj ②若[A→α·, a]∈Jk,j是产生式A→α的编号 则置ACTION[k, a]为 rj, ③若[S→S·, # ]∈Jk,则置ACTION[k, #]为 acc (4) GOTO表的构造 若GO(Jk, A)=Ji,则置GOTO[k, A] = i (5) 分析表中凡不能用(3)、(4)填入信息的空白格均填上“出错标志”。 经上述步骤构造的分析表若不存在冲突,则称它为文法的LALR分析表 存在这种分析表的文法称为LALR文法 对于同一个文法,LALR分析表和LR(0)以及SLR分析表永远具有相同数目的状态。 例:写出输入符号串 #aab# 的LR分析过程和LALR分析过程 LR分析小结 LR分析过程是__________________ 符号栈中的符号串是________________ 分析决策依据_________________________ 为构造LR分析表,可先构造________________DFA LR分析器的关键是_______________ LR(0) 、SLR(1) 、 LALR(1) 、 LR(1) 功能________ 四种LR类型的文法是________关系 LR类型文法是____二义的 * 能 可能 图5.10 LR(1)项目集和GO函数 p116 (0)S? S (1)S ? BB (2)B ? aB (3)B ? b 该文法产生的是语言 a*ba*b S I 0 :S →·S, # S →·BB, # B →·aB, a/b B →·b, a/b ′ B I 2 :S →B·B, # B →·aB, # B →·b, # I 4 :B →b·, a/b b I 3 :B →a·B, a/b B →·aB, a/b B →·b, a/b b b I 7 :B →b·, # I 8 :B →aB·, a/b a B I 5 :S →BB·, # I 6 :B →a·B, # B →·aB, # B →·b, # B a a I 9 :B →aB·, # b a B I 1 :S →S· , # ′ 例5.13 I 4 :B →b·, a/b I 3 :B →a·B, a/b B →·aB, a/b B →·b, a/b I 7 :B →b·, # I 8 :B →aB·, a/b I 6 :B →a·B, # B →·aB, # B →·b, # I 9 :B →aB·, # I47: B→b· , a/b/# I89: B→aB· , a/b/# I36: B→a·B , a/b/# B→·aB , a/b/# B→·b , a/b/# 表5.5 例5.13 ☆的 LR分析表 p116 r2 9 r2 r2 8 r3 7 9 s7 s6 6 r1 5 r3 r3 4 8 s4 s3 3 5 s7 s6 2 acc 1 2 1 s4 s3 0 B S # b a GOTO ACTION 状 态 5 s7 s6 2 acc 1 2 1 s4 s3 0 B S # b a GOTO ACTION 状 态 表5.6 例5.13 的 LALR分析表 p119 合并同心集 36 47 5 89 s36 s47 s36 s47 s36 s47 89 r3 r3 r3 r1 r2 r2 r2 是否会产生冲突? 1、合并GOTO表 例如:设 Im和In 同心 同心集遇某文法符号X进行状态转换后, 仍然同心. 所以合并GOTO表的过程中不会出现冲突 Im: A???X?, a In: A???X?, b Im? : A??X??, a In?
文档评论(0)