2016 compiler lecture04b bottom up parsing讲座4b自下而上解析概述lr方法.pdfVIP

2016 compiler lecture04b bottom up parsing讲座4b自下而上解析概述lr方法.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
讲座 4B 自下而上解析概述 自下而上解析概述 LR 解析方法概述 LR(0)Items 和 LR(0)的有限自动机 解析.SLR(1)解析自底向上解析概述 讨论: 1 自下而上解析的主要思想 2 自下而上解析的实现 3 自下而上解析的特点 1 自底向上解析的主要思想 定 析从输入字符串开始,通过逐步归约,尝试将输入字符串归约到文法的起始符号 解析树的构造:输入字符串 是解析的叶子树,解析向上向根,即开始符号 155174-编译器原理讲座 4 刘欣欣, 2021/8/24 彭绍武,应伟勤 例 G:S →cAd A →ab A →a 字符串 “cabd”自底向上解析 约简过程:cabd |-cAd |-S S 使用 “|-”表示一个约简步骤 A c abd 自下而上解析 “cabd”两个约简过程的关键 S→cAd A→ab A→a 1)cabd|-cAd|-S 可以化简为 S 2)cabd|-cAbd 不能还原为 S 在每个还原步骤中,与产生式右侧匹配的特定子串被产生式左侧的结构名称替换 自下而上解析的关键是如何确定减 少子串 2 自底向上解析的实现 解析堆栈 自底向上解析器使用显式堆栈来执行解析 自底向上解析的示意图是: 解析堆栈输入操作 InputString$ StartSymbol $accept 堆栈中自顶向下和自底向上解析 自顶向下解析堆栈包含标记和非 符,而自底向上解析堆栈包含标记、非 符和状态 自顶向下解析堆栈 等待解析中匹配的符号,而自底向上解析堆栈包含标记、非 符和状态自下而上解析堆栈 已匹配的符号自下而上解析的 实现基于堆栈内容并使用输入中的下一个标记作为前瞻来确定要执行的下一个操作自下而上解析器有两个可能的操作 1.Shift:将一个终端从输入的前面移到栈顶 2.Reduce:将栈顶的字符串 α减少为非 符 A,给定产生式A- α 所以自下而上的解析也称为 shift-reduce 解析 Stack Input Action 1 abbcde$ 转移 2 一个 bbcde$ 转移 3 ab bcde$ 减少 A→b 4 aA bde$ 转移 5 aAb cde$ 还原 A→Ab 6 aA cde$ 转移 7 aAc de$ 转移 8 aAcd e$ 减少 B→d 9 aAcB e$ 转移 10 aAcBe 还原 S→aAcBe 11 S 接受 实施的关键 确定何时转移、何时减少? 不同的确定方 产生不同功率和复杂度的不同移位归约解析器 自底向上解析的3 个特征 1)右句形式 2)可行的前缀 3)手柄 1)右句子形式 移位归约解析器以相反的顺序追踪输入字符串的最右推导 例如 S-aAcBe A-b A-Ab B-d “abbcde”的最右推导是:S=aAcBe =aAcde=aAbcde=abbcde 移位归约解析过程为 abbcde |-aAbcde |-aAcde |-aAcBe |-S 最右推导中的每个中间字符串称为右句形式 abbcde |-aAb cde |-aAcde |-aAcBe |-S 每个右句子形式在解析堆栈和输入之间拆分 右句子形式和移位归约解析 移位归约解析器会将终端从输入移至堆栈,直到 可以执行归约获得下一个正确的句子形式 2)可行前缀 解析堆栈上的符号序列称为右句形式的可行前缀 堆栈输入动作 6 $aA cde$shift 7 $aAc de$shift aAcde”是一个右句形式,它在解析堆栈和步骤 6,7 和 8 中的输入之间分割 aA,aAc,aAcd 都是 aAcde 的可行前缀。可行前缀和移位归约解析只要解析堆栈的内容是右句形式的可行前缀,移位归约解析就是正确的 3)句柄 句柄的非正式定义:右句形式的句柄是一个与产生式右侧匹配的子串,其还原到产生式左侧的非 符表示沿着产生式的逆过程的一步。 最右推导。 例如 S-aAcBe A-b A-Ab B-d S=aAc

文档评论(0)

wccebooks + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档