第5章 自下上的语法分析.pptVIP

  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文档。上传文档
查看更多
第5章 自下上的语法分析

第5章 自下而上的语法分析 5.1 自下而上的语法分析概述 从叶结点出发,步步向上归约。若能归约到根结点,说明输入串是文法的一个句子,否则输入串存在语法错误。 比较:从文法的开始符号出发进行推导,最终推出确定的输入串(由单词种别构成的源程序)。 5.1 自下而上的语法分析概述 ㈠概述 实质上是一种移进归约法,设置一个栈,将输入串符号逐个移进栈内,一旦发现栈顶形成某个产生式的候选式时,立即将栈顶这一部分符号替换(归约)成该产生式的左部符号。 5.1 自下而上的语法分析概述 例给定文法G: S→aAcBe A→b | Ab B→d 输入串abbcde 5.1 自下而上的语法分析概述 移进归约过程如下所示 5.1 自下而上的语法分析概述 因最终归约到根结点,输入串abbcde是文法的一个句子。 5.1 自下而上的语法分析概述 ㈡问题 从第④步到第⑤步有二种选择,可将b归约成A,栈顶成aAA;也可将Ab归成A,栈顶成aA,显然后者是正确的,故需精确定义可归约串。 5.1 自下而上的语法分析概述 ㈢句柄和规范归约 ①短语 ②直接短语(简单短语) 5.1 自下而上的语法分析概述 ③句柄 句型aAbcde中存在三个短语,它们是Ab、d和aAbcde,其中Ab和d是直接短语,句柄是Ab。不能因为存在规则A→b,就断定b是这个句型的一个短语,b不是句柄,甚至连短语都不是。 5.1 自下而上的语法分析概述 ④规范归约(最左归约) ⑤规范句型 ⑥规范推导 ⑦图解法 5.2 算符优先文法 1.算符文法 比较简单,适合手工构造,特别适合算术表达式的语法分析 2.算符优先分析法的优先关系 P106 5.2 算符优先文法 3.算符优先文法的定义P107 5.2 算符优先文法 4.FIRSTVT集合定义P109 LASTVT集合定义P109 5.2 算符优先文法 构造集合的规则 5.2 算符优先文法 5.构造算符优先文法分析表 5.3 LR分析法的基本原理 LR分析法适用范围广泛,适合自动生成,目前大多数编译程序的语法分析器都采用这种分析法 5.3 LR分析法的基本原理 ㈠前缀—字的任意首部 ㈡活前缀—规范句型的一个前缀,不包含句柄后的任何符号。活就是其右部添加一些终结符后,就构成一个规范句型 ㈢LR分析法的基本思想 把每个句柄的识别(产生式右部符号串)过程划分为若干状态,每个状态只识别句柄的一个符号,若干个符号就可识别句柄左端的一部分符号。 识别了句柄这一部分就相当于识别了当前规范句型的左起部分,既规范句型的活前缀。 5.3 LR分析法的基本原理 对于文法G,可以构造一个有限自动机DFA,用它去识别给定文法的所有规范句型的活前缀,然后把这个DFA转换成LR分析表。 因此,首先构造一个识别文法G所有活前缀的NFA,这个NFA的每个状态是下面定义的一个“项目” 5.3 LR分析法的基本原理 ㈣LR(0)项目(简称项目) 文法G的LR(0)项目定义为: 在文法G每个产生式右部的某个位置添加一个园点“.”。如A →XYZ包含四个项目 A →.XYZ A →X.YZ A →XY.Z A →XYZ. 特例,A→ε的项目为A→.。 5.3 LR分析法的基本原理 例 文法 0.???????? S→E 1.???????? E→aA 2.???????? A→cA 3.???????? A→d 4.???????? E→d 5.3 LR分析法的基本原理 这个文法的项目有 1S→.E 2S→E. 3E→.aA 4E→a.A 5E→aA. 6A→.cA 7A→c.A 8A→cA. 9A→.d 10A→d. 11E→.d 12E→d. 5.3 LR分析法的基本原理 ㈤构造识别活前缀的NFA ①将每个项目视为识别活前缀NFA的一个状态。 ②规定状态S→.S为NFA的唯一初态,状态S→S.为NFA的唯一接受态(S为原文法开始符号,S为拓广文法开始符号)。 5.3 LR分析法的基本原理 ③因在每个状态都可识别出一个活前缀(初态可识别出活前缀ε),故NFA的每个状态都是终态,终态又称为活前缀识别态。 ④如果状态i和状态j源自于同一产生式,而且状态i和状态j的园点位置相差一个文法符号,例 状态i为 i:X→X1……Xi-1 .XiXi+1……Xn 状态j为 j:X→X1……Xi-1Xi .Xi+1……Xn 那么状态i和j之间存在一条弧,标记为Xi,表示在状态i读入Xi进入状态j。 5.3 LR分析法的基本原理 ⑤若状态i园点之后的符号为非终结符(例i:X→α .Aβ),那么从状态i画一条ε弧到所有k:A→.γ状态,表示只有看到了从A推出的全部符号: 状态i: X→α .A

文档评论(0)

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

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

1亿VIP精品文档

相关文档