编译原理 6章课件.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文档。上传文档
查看更多
编译原理 6章课件

第6章 自下而上分析和优先 分析方法 ;自下而上分析是最右推导的逆过程,从构造语法树的观点来讲,是指从树的末端结点开始,逐步向上归约,直至树的根结点,也就是说,从输入串本身开始,朝着开始符号进行归约。直至到达开始符号为止。 确定的自下而上分析器通常分为两大类:优先分析器(Precedence Parser)和 LR(k)分析器。 本章将主要讨论优先分析器方面的内容。在具体讨论优先分析方法之前,我们先介绍句柄和归约的概念。因为它们在自下而上分析过程中占有重要地位。;6.1 短语与句柄 ;例6.1 设文法G37[数]: 数→数字串 数字串→数字串数字|数字 数字→0|1|2|3|4|5|6|7|8|9 w=数字串1是它的一个句型。 我们不能因为有数?数字串就断定数字串就是w的简单短语。因为“数1”不是一个句型。事实上 ,w含有两个短语:“数字串1”和“1”,“1”是简单短语而且是句柄,因为有 a) 数 数字串 且数字串 数字串1 b) 数 数字串数字 且数字?1;语法树与短语的关系密切。语法树的子树是由该树的某个结点(称为子树的根)及其所有分枝构成的部分树称为原树的一颗子树。 语法树的简单子树是只有单层分枝的子树——这颗子树只有且必须有父子两代,没有第三代,由此,引出下述结论: 每个句型(句子)都对应一颗语法树; 每颗语法树的端末结点自左至右排列构成一个句型(句子); 每颗子树的端末结自左至右排列构成一短语; 每颗子树的端末结自左至右排列构成一简单短语; 最左简单子树的端末结自左至右排列构成一句柄。; 例6.3 句型? = (a,(T),(T,S))的语法树如右图所示。它有7个分枝结点,分别以这7个分枝结点为根结点,得7棵子树。再分别由这7棵子树的叶子结点(从左到右)组成7个符号串,它们是句型?的7个短语。这7个短语是: ① (a,(T),(T,S)) ② a,(T),(T,S) ③ a,(T) ④ (T,S) ⑤ a ⑥ (T) ⑦ T,S 句型?的语法树有3棵简单子树。由这3棵简单子树的叶子结点组成的符号串,则是句型?的3个简单短语: ① a ② (T) ③ T,S 句型?的语法树的最左简单子树的叶子结点a便是句型?的句柄。;6.2 移进-归约方法 ;6.3 非确定的自下而上分析器; 下面给出这种分析器的形式定义: 一个自下而上PDA P是一个七元组:(Q,∑,H,δ,q0,$,F) 其中: Q 是状态的有穷集,它的每个元素称为一个状态; ∑是一个有穷输入字母表,它的每个元素是一个输入符号; H 是一个有穷栈符号字母表,它的每个元素称为一个栈符号; δ是从Q×H* ×(∑∪{ε})到Q ×H*有穷子集的一个有穷映射; q0∈Q 是该PDA的初态; $∈H 是下推栈的初始符号; F 是一个终态集(或接收状态集);它的每个元素称为终态;(可空)。;这种PDA的一个构形记为(状态,栈,输入串)(注意,栈顶在右端)。类似的,一个移动定义为从一个构形到另一个构形的转换: (p,zx,bw)├(q,zy,w) 其中b∈∑∪{ε},x,y,z属于H*,w∈∑*,而且 δ(p,x,b) 包含(q,y) 这样的PDA称为非确定的,如果某个δ(p,x,b)包含一个以上的对偶,或者其中的x或b为空。 由p所定义的语言L(P)记为 {w|(q0,Z0,w)├*(q,x,ε), q∈Fx∈H* } ; 给定CFG G=(N,∑,P,S),用下述方法可以为它构造一个拓广的PDA R使得L(R)=L(G): 1. R有两个状态q和r; 2. R的输入字母表是∑; 3. 栈字母表H由N∪(∑∪{$})组成; 4. 栈的初始符号是$; 5. 初态为q,终态集F={r}; 6. 映射函数δ定义如下: ① 移进规则 对每个终结符b∈∑,δ(q,ε,b)包含{(q,b)}。这些移动的作用是:将输入串的符号移进栈。 ② 归约规则 对P中的每个产生式A→w,δ(q,w,ε) 包含(q,A),这些移动的作用是把位于栈顶的句柄w归约到相应的非终结符A。 ③ 停止规则 δ(q,$S,ε)包含(r,ε),其中S是文法G的开始符号。这个规则表示分析成功,停止任何动作。注意,它要求栈只含有$S。; 例6.5 考虑算术表达式文法G3[E]: E→E+T E→T T→T?F T→F F→(E) F→a ;尽管上面这些映射函数都不包含一个以上的对偶,但这个PDA仍是非确定的。其中,前五个转换函数用于把输入符号移进栈。接下来的六个用于完成归约工作,该PDA恰好识别L(G).;现在,我们考

文档评论(0)

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

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

1亿VIP精品文档

相关文档