编译原理第五章语法分析自下而上分析.ppt

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

SLR(1)的局限 Follow 集包含了在任何句型中跟在 R 后的符号但没有严格地指出在一个特定的推导里哪些符号跟在 R后。所以需要扩充状态以包含更多的信息:Follow 集的哪些部分 才是进到该状态最恰当的归约依据. 处在状态 2时,试图构建句子有两条路: 1.S ?L R 或 2.S ? R ? L. 如下一符号是 , 那就不能用第二个选择,必须用第一个,即移进. 只有下一个符号是#时才能归约. 尽管 属于 Follow R ,那是因为一个 R 可以出现在别的上下文中,在现在这个特定的情况,它不合适,因为在用S ? R ? L推导句子时, 不能跟在R后。 非 LR 0 ,非SLR 1 举例 0 S’→S 1 S→aAd 2 S→bAc 3 S→aec 4 S→bed 5 A→e I5: S →ae.c I7: S →be.d A →e. A →e. S’ S aAd aed S’ S bAc bec S’ S aec S’ S bed ae是活前缀 be是活前缀 aAc不是规范句型 , bAd不是规范句型 不作无效归约 ?信息- 在特定的规范推导中,哪些输入符号能跟在句柄之后? LR 1 的项目集C和函数GO 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, # a I3: B?a?B, a/b B??aB, a/b B? ?b, a/b b I4: B? b ?, a/b B I5: S?BB?, # a I6: B?a?B, # B??aB, # B? ?b, # b I7: B? b ?, # B I8: B? aB?, a/b a b a I9: B? aB?, # B b I0: S’??S, # S??BB, # B??aB, a B??aB, b B? ?b, a B? ?b, b LR 1 分析表为: 例: 按上表对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 #B ab# 7 026 #Ba b# 8 0267 #Baa # 9 0269 #BaB # 10 025 #BB # 11 01 #S # acc 例: 按上表对abab进行分析 步骤 状态 符号 输入串 0 0 # abab# 1 03 #a bab# 2 034 #ab ab# 3 038 #aB ab# 4 02 #B ab# 5 026 #Ba b# 6 0267 #Bab # 7 0269 #BaB # 8 025 #BB # 9 01 #S # acc 定义:如果采用同心项目集合并方法,进行合并后的文法G的LR 1 项目集规范族,没有LR 1 项目冲突,则称文法G为LALR 1 文法。 5.3.5 规范LALR 1 分析 LR 1 语法分析表的状态数量很大 SLR 1 语法分析表的分析能力较弱 LALR 1 是实践中常用的方法 状态数量和SLR 1 的状态数量相同 能够方便地处理大部分常见的程序设计语言的构造 定义:同心项目集:如果除去搜索符之后,这两个集合是相同的,则我们两个LR 1 项目集具有相同的心。 LR 1 语法分析表的合并 状态4和7仅仅向前搜索符不同。 当前状态为4时:如果后面是c或者d时,应该归约;后面是#时,应该报错。当前状态为7时,分析动作正好反过来。 如果我们将4和7中的项合并得47,那么在所有情况都归约。 新的语法分析过程会在原来报错时进行归约;但是最终总会报错。 对应这个文法,合并不会引起任何冲突,但是对应有些文法会有冲突。 对于任意文法,如果SLR 1 分析表没有冲突,合并得到的分析表也没有冲突。 LALR分析技术的基本思想 寻找具有相同核心的LR 1 项集,并把它们合并成为一个项集 项集的核心就是项的第一分量的集合; I4和I7的核心都是 [B?b.] , I3和I6的核心 B?a.B B?.aB B?.b 一个LR 1 项集的核心就是LR 0 项集; GOTO I,X 的核心只由I的核心决定,因此被合并项集的GOTO目标也可以合并。 这表示合并之后,我们仍然可以建立GOTO关系。 合并引起的冲突

文档评论(0)

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

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

1亿VIP精品文档

相关文档