自上而下语分析.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 自上而下语法分析 语法分析是继词法分析之后编译过程的第2阶段。它的主要任务是对词法分析的输出结果——单词序列进行分析,识别合法的语法单位。 语法分析最常用的方法有:优先方法、递归下降法、LL方法和LR方法。 所谓自上而下分析是指从树的根结点开始,为给定的输入串构造一棵语法树。 本章中,我们通过讨论一个一般的非确定的自上而下分析器来讨论上下无关语言的自上而下分析器的设计。 5.1 非确定的下推自动机 下面所要构造的非确定的自上而下分析器属于一般的下推自动机(PDA)类。 所谓一个下推或栈自动机(Stack Automaton),非形式地说,应包含: ①一个输入符号串; ②一个读头,它从左至右移动,每次读进一个输入符号; ③一个有穷状态自动机,用于控制整个系统的操作; ④一个后进先出下推栈, 5.1.1 PDA形式定义 形式上说,一个PDA是一个七元组: (Q,∑,H,δ,q0,Z0,F) Q 是状态的有穷集,它的每个元素称为一个状态; ∑ 是有穷的字母表,它的每个元素是一个输入符号; H 是有穷的下推栈字符表,它的每个元素称为一个栈符号。 q0∈Q 是该PDA的初态; Z0∈H 是下推栈的初始符号; F ? Q 是一个终态集(或接收状态集);它的每个元素称为终态;(可空)。 5.1.1 PDA形式定义 δ 是描述PDA动作与状态变化的。 PDA的动作可用δ定义式来表示为: δ(q,a,z)={(p1,h1),(p2,h2)…(pn,hn)} 它的含义为: 在控制器当前状态为q,下推栈顶符号为z ,输入符号为a的情况下,把控制器的状态改为pi,用hi 替换栈顶的z,并让读头右移一格。 5.1.2 PDA的 构形和移动 PDA的一个构形是一个三元组:(q,w,h) 其中,q∈Q;w∈∑*是尚待扫描的输入串,包括读头当前所指的符号;h∈H*是栈的内容。 PDA的一次移动可看作是从一种构形变换成另一种构形的一种方式。反过来,构形又为定义PDA的移动提供了一种更简单的手段。我们称 (q,ax,Zh′)├(p,x,hh′) 是一次可能的移动,当且仅当(p,h)∈δ(q,a,Z) 。 常用├+表示由一次或多次移动组成的序列。用├*表示由零次或多次移动组成的序列。注意“零”次移动并不改变当前的构形。 5.1.2 PDA的 构形和移动 PDA M 所识别的语言L(M)可表示为: L(M)= {ω??*︱(P0,ω,Z0)├*(P,?,?)}(空栈接收)或者 L(M)= {ω??*︱(P0,ω,Z0)├*(P,?,h) &p?F}(终态接收) 例5.1 考虑下表定义的两状态PDA,其的两个状态分别是p和Q,δ(p,a,Z)={(p1,h1),(p2,h2),…},输入符号是0和1,栈符号是R,B和G。该PDA识别由符号0和1组成的所有回文(Palindrome) 。 这个自动机是非确定的,因为在行3和行6包含了可供选择的移动;也因为无输入符号(如在行7)时照样可进行移动,而且此时存在相应的选择。该PDA的开始状态时p,初始栈内容时R。它停止于空栈。用该PDA识别输入串001100,其识别过程如下: (p,001100,R) ├(p,01100,BR) 由行1 或 ├(Q,001100,ε) 由行7(阻塞) (p,01100,BR) ├(p,1100,BBR) 由行3a 或 ├(Q,1100,R) 由行3b (Q, 1100,R) ├(Q,1100,ε) 由行10(阻塞) (p,1100,BBR) ├(p,100,GBBR) 由行5 (p, 100,GBBR)├ (p,00,GGBBR) 由行6a 或 ├(Q,00,BBR) 由行6b (p,00,GGBBR) ├(p,0,BGGBBR) 由行4 (p,0,BGGBBR) ├(p,ε,BBGGBBR) 由行3a(阻塞) 或 ├(Q,ε,GGBBR) 由行3b(阻塞) (Q,00,BBR) ├(Q,0,BR) 由行8 (Q,0,BR) ├(Q,ε,R) 由行8 (Q,ε,R) ├(Q,ε,ε) 由行10(接收) 5.1.3 上下文无关语言与PDA 联系PDA和上下文无关语言的一个重要定理是: 定理5.1 对每一个上下文无关语言L,存在一个恰好识别L的非确定的PDA M,反之亦然。 这个定理在编译系统中的实际重要性在于:现有的大多数高级程序设计语言都可用上下文无关文法描述。因此定理5.1隐含了:识别这个语言的机械识别器必是PDA。 5.1.3 上下文无关语言与PDA 定理5.1包含两方面含义: 给定一个上下文无关语言,存在

文档评论(0)

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

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

1亿VIP精品文档

相关文档