编译原理第六章-自底向上优先分析法.ppt
《编译原理第六章-自底向上优先分析法.ppt》由会员分享,可在线阅读,更多相关《编译原理第六章-自底向上优先分析法.ppt(73页珍藏版)》请在三一办公上搜索。
1、1,第六章 自底向上优先分析法,2,自底向上优先分析法慨述简单优先分析算符优先分析,3,6.1 自底向上语法分析概述,如名字如示,自底向上语法分析试图将一个字符串反向归约至开始符号。自底向上语法分析比自上而下语法分析更有效率,对语法的限制更少,4,自底向上语法分析的策略:移进-规约分析;移进就是将一个终结符推进栈归约就是将0个或多个符号从栈中弹出,根据产生式将一个非终结符压入栈移进-归约过程是自顶向下最右推导的逆过程(规范归约),5,例6.1设文法Gs为:(1)S aAcBe(2)A b(3)A Ab(4)B d对输入串abbcde进行分析,检查该符号串是否是Gs的句子。分析:容易看出对输入串
2、abbcde的最右推导是:SaAcBeaAcdeaAbcdeabbcde由此我们可以构造它的逆过程即归约过程。,6,自底向上分析的关键问题:如何确定句柄。,7,自底向上优先分析法慨述简单优先分析算符优先分析,8,6.2 简单优先分析法,按照文法符号(包括终结符和非终结符)的优先关系确定句柄。,9,6.2.1 优先关系,优先关系X=Y 文法G中存在产生式A.XY.XY 文法G中存在产生式A.BD.,且B.X,D Y.如何确定两个文法符号之间的优先关系?(按定义求优先关系,P96),10,6.2.2 简单优先文法的定义,满足以下条件的文法是简单优先文法(1)在文法符号集V中,任意两个符号之间最多只
3、有一种优先关系成立。(2)在文法中任意两个产生式没有相同的右部,11,6.2.3 简单优先分析法,算法步骤如下:,12,文法GS:(1)S bAb(2)A(B|a(3)B Aa),步骤,符号栈,输入符号串,动作,1)#b(aa)b#b,移进,2)#b(aa)b#b(,移进,3)#b(aa)b#(a,移进,4)#b(a a)b#aa,归约Aa,5)#b(A a)b#A=a,移进,6)#b(Aa)b#a=),移进,7)#b(Aa)b#)b,归约BAa),8)#b(B b#Bb,归约A(B,9)#bA b#A=b,移进,10)#bAb#b#,归约SbAb,11)#S#接受,对输入串b(aa)#的简单
4、优先分析过程,简单优先关系矩阵,13,自底向上优先分析法慨述简单优先分析算符优先分析,14,6.3 算符优先分析法,某些文法具有“算符”特性表达式运算符(优先级、结合性)人为地规定其算符的优先顺序,即给出优先级别和同一级别的结合性只考虑算符之间的优先关系来确定句柄,15,6.3.1 直观算符优先分析法,(1)优先级最高,右结合(2)*和/优先级次之,左结合(3)+和-优先级最低,左结合(4)括号(,)的优先级大于括号外的运算符,小于括号内的运算符,内括号的优先性大于外括号(5)#的优先性低于与其相邻的算符,文法GE:EE+E|E-E|E*E|E/E|EE|(E)|i,算符优先关系表,16,文法
5、GE:EE+E|E-E|E*E|E/E|EE|(E)|i,步骤,符号栈,输入符号串,动作,1)#i+i*i#i,移进,2)#i+i*i#+,规约,3)#E+i*i#+,移进,4)#E+i*i#+i,移进,5)#E+i*i#+*,规约,6)#E+E*i#+*,移进,7)#E+E*i#*i,移进,8)#E+E*i#*#,规约,9)#E+E*E#+#,规约,10)#E+E#,规约,11)#E#接受,对输入串i+i*i的算符优先分析过程,算符优先关系表,17,6.3.2 算符优先文法的定义,定义 设有一文法G,如果G中没有形如A BC的产生式,其中B和C为非终结符,则称G为算符文法(Operator
6、Grammar)也称0G文法.性质1:在算符文法中任何句型都不包含两个相邻的非终结符.(数学归纳法)性质2:如果从Ab或(bA)出现在算符文法的句型中,其中A,b,则中任何含b的短语必含有A。(反证法),18,算符优先文法的定义(续),设G是一个不含 产生式的算符文法 a=b G中有形如.Aab或A aBb 的产生式。a b G中有形如.A Bb的产生式,而 B a或B aC(语法子树可以直观的说明算符的优先关系P101),19,算符优先文法的定义(续),定义 设有一不含 产生式的算符文法G,如果对任意两个终结符对a,b之间至多只有、和三种关系的一种成立,则称G是一个算符优先文法(Operat
7、or Precedence Grammar)即OPG文法。(P101),20,6.3.3 算符优先关系表的构造,由定义直接构造由关系图法构造算符优先关系表,21,首先引入两个概念FIRSTVT(B)=b|B b或B Cb.对于非终结符B,其往下推导所可能出现的首个算符LASTVT(B)=a|B a或B.aC对于非终结符B,其往下推导所可能出现的最后一个算符,(1)由定义直接构造,22,三种优先关系的计算:1)=关系直接看产生式的右部,若出现了A ab或A aBb,则a=b2)关系求出每个非终结符B的LASTVT(B)若ABb,则aLASTVT(B),ab,23,文法GE:(0)E#E#(1)E
8、E+T(2)ET(3)TT*F(4)TF(5)FPF|P(6)P(E)(7)Pi,FIRSTVT(E)=#FIRSTVT(E)=+,*,(,iFIRSTVT(T)=*,(,iFIRSTVT(F)=,(,iFIRSTVT(P)=(,iLASTVT(E)=#LASTVT(E)=+,*,),iLASTVT(T)=*,),iLASTVT(F)=,),iLASTVT(P)=),i,1)=关系由产生式(0)和(6),得#=#,(=)2)关系找形如:AaB的产生式#E:则#FIRSTVT(E)+T:则+FIRSTVT(T)*F:则*FIRSTVT(F)F:则 FIRSTVT(F)(E:则(FIRSTVT(E
9、),3)关系找形如:ABb的产生式E#,则 LASTVT(E)#E+,则 LASTVT(E)+T*,则 LASTVT(T)*P,则 LASTVT(P)E),则 LASTVT(E),24,对以上的优先关系表我们也可以给出一下的算法,这个算法基于一下两条规则:a)若有产生式Aa或A Ba,则 aFIRSTVT(A),其中A、B为非终结符,a为终结符。b)若aFIRSTVT(B)且有产生式A B则有aFIRSTVT(A)。算法如下:其主程序如下:,25,(P,i)(P,()(F,)(T,*)(E,+)(E,#),26,(F,i)(P,()(F,)(T,*)(E,+)(E,#),27,(T,i)(P,
10、()(F,)(T,*)(E,+)(E,#),28,(E,i)(P,()(F,)(T,*)(E,+)(E,#),29,(P,()(F,)(T,*)(E,+)(E,#),30,(F,()(F,)(T,*)(E,+)(E,#),31,(T,()(F,)(T,*)(E,+)(E,#),32,(E,()(F,)(T,*)(E,+)(E,#),33,(F,)(T,*)(E,+)(E,#),34,(T,)(T,*)(E,+)(E,#),35,(E,)(T,*)(E,+)(E,#),36,(T,*)(E,+)(E,#),37,(E,*)(E,+)(E,#),38,(E,+)(E,#),39,(E,#),40,
11、41,FIRSTVT(E)=#FIRSTVT(E)=+,*,i,(FIRSTVT(T)=*,i,(FIRSTVT(F)=,i,(FIRSTVT(P)=i,(,42,FIRSTVT(E),FIRSTVT(T),FIRSTVT(E),FIRSTVT(F),FIRSTVT(P),#,+,*,(,i,43,FIRSTVT(E),FIRSTVT(T),FIRSTVT(E),FIRSTVT(F),FIRSTVT(P),#,+,*,(,i,44,用下面算法构造文法的优先关系表。,45,(2)由关系图法构造算符优先关系表,定义 设文法G(VN,VT,S,P)是一个上下文无关文法,在v上定义以下关系:A FIR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第六 向上 优先 分析
链接地址:https://www.31ppt.com/p-6486254.html