资源描述:
《自上而下语法分析.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章自上而下语法分析语法分析是继词法分析之后编译过程的第2阶段。它的主要任务是对词法分析的输出结果——单词序列进行分析,识别合法的语法单位。语法分析最常用的方法有:优先方法、递归下降法、LL方法和LR方法。所谓自上而下分析是指从树的根结点开始,为给定的输入串构造一棵语法树。本章中,我们通过讨论一个一般的非确定的自上而下分析器来讨论上下无关语言的自上而下分析器的设计。5.1非确定的下推自动机下面所要构造的非确定的自上而下分析器属于一般的下推自动机(PDA)类。所谓一个下推或栈自动机(StackAutomaton),非形式地说,应包含
2、:①一个输入符号串;②一个读头,它从左至右移动,每次读进一个输入符号;③一个有穷状态自动机,用于控制整个系统的操作;④一个后进先出下推栈,下推自动机的非空移动:5.1.1PDA形式定义形式上说,一个PDA是一个七元组:(Q,∑,H,δ,q0,Z0,F)Q是状态的有穷集,它的每个元素称为一个状态;∑是有穷的字母表,它的每个元素是一个输入符号;H是有穷的下推栈字符表,它的每个元素称为一个栈符号。q0∈Q是该PDA的初态;Z0∈H是下推栈的初始符号;FQ是一个终态集(或接收状态集);它的每个元素称为终态;(可空)。5.1.1PDA形式定义
3、δ是描述PDA动作与状态变化的。PDA的动作可用δ定义式来表示为:δ(q,a,z)={(p1,h1),(p2,h2)…(pn,hn)}它的含义为:在控制器当前状态为q,下推栈顶符号为z,输入符号为a的情况下,把控制器的状态改为pi,用hi替换栈顶的z,并让读头右移一格。5.1.2PDA的构形和移动PDA的一个构形是一个三元组:(q,w,h)其中,q∈Q;w∈∑*是尚待扫描的输入串,包括读头当前所指的符号;h∈H*是栈的内容。PDA的一次移动可看作是从一种构形变换成另一种构形的一种方式。反过来,构形又为定义PDA的移动提供了一种更简单的
4、手段。我们称(q,ax,Zh′)├(p,x,hh′)是一次可能的移动,当且仅当(p,h)∈δ(q,a,Z)。常用├+表示由一次或多次移动组成的序列。用├*表示由零次或多次移动组成的序列。注意“零”次移动并不改变当前的构形。5.1.2PDA的构形和移动PDAM所识别的语言L(M)可表示为:L(M)={ω*︱(P0,ω,Z0)├*(P,,)}(空栈接收)或者L(M)={ω*︱(P0,ω,Z0)├*(P,,h)&pF}(终态接收)例5.1考虑下表定义的两状态PDA,其的两个状态分别是p和Q,δ(p,a,Z)={(p1,h1)
5、,(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)
6、由行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联
7、系PDA和上下文无关语言的一个重要定理是:定理5.1对每一个上下文无关语言L,存在一个恰好识别L的非确定的PDAM,反之亦然。这个定理在编译系统中的实际重要性在于:现有的大多数高级程序设计语言都可用上下文无关文法描述。因此定理5.1隐含了:识别这个语言的机械识别器必是PDA。5.1.3上下文无关语言与PDA定理5.1包含两方面含义:给定一个上下文无关语言,存在一个识别它的PDAM;反过来,给定一个PDAM,可以根据它构造出一个等价的上下文无关文法。前者对编译程序的构造很有吸引力,但后者则不然。算法5.1从CFG到NDPDA给定CFGG
8、=(N,∑,P,S)可以构造一个相应的非确定的PDAM:M=(Q,∑′,H,δ,q0,Z0,F)它只有一个状态q和下面的转换规则:①对P中每一个形如A→w的产生式,δ(q,ε,A)包含(q,w);②对每个a∈∑,δ(p,