资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第6 6章章 自底向上优先分析法自底向上优先分析法1主要内容主要内容6.1 自底向上优先分析概述自底向上优先分析概述6.3 算符优先分析法算符优先分析法2课题:课题:自底向上分析方法、算符优先文法目的要求:目的要求: 1.理解自底向上的语法分析方法的基本思想; 2.掌握算符文法、算符优先文法的定义和性质教学重点:教学重点: 1.优先分析法的基本思想和术语; 2.算符文法、算符优先文法的定义和性质教学难点教学难点 : 算符优先关系的定义教学课时:教学课时:2教学方法:教学方法:多媒体教学教学内容和步骤教学内容和步骤 :(如下) 第第 十二十二 讲讲3自底向上分析方法,也称移进归约分析法自底向上分析方法,也称移进归约分析法实现思想(是推导的逆过程):实现思想(是推导的逆过程):对对输输入入符符号号串串自自左左向向右右进进行行扫扫描描,并并将将输输入入符符逐逐个个移移入入一一个个后后进进先先出出栈栈中中,边边移移入入边边分分析析,一一旦旦栈栈顶顶符符号号串串形形成成某某个个句句型型的的句句柄柄时时,就就用用该该产产生生式式的的左左部部非非终终结结符符代代替替相相应应右右部部的的文文法法符符号号串串,称称为为归归约约。重重复复这这一一过过程程,直直到到归归约约到栈中只剩下文法的开始符号时,则分析成功。到栈中只剩下文法的开始符号时,则分析成功。自底向上分析方法的基本思想自底向上分析方法的基本思想4例例1:文法:文法:SaAcBeA bA AbB d输入串输入串abbcde#分析分析最右推导:最右推导: SaAcBe aAcde aAbcde abbcde规约分析过程如下:规约分析过程如下:5步骤步骤符号栈符号栈输入符号串输入符号串 动作动作1#abbcde#移进移进2#abbcde#移进移进3#abbcde#归约归约 Ab 4#aAbcde#移进移进5#aAbcde#归约归约 AAb 6#aAcde#移进移进7#aAcde#移进移进8#aAcde#归约归约 Bb 9#aAcBe#移进移进10#aAcBe#规规约约 SaAcBe11#S#接受接受6上述的每一步规约可以构造一颗语法树:上述的每一步规约可以构造一颗语法树:AbBdAAbbSAbbaceBdA7问题的提出:问题的提出:在构造语法树的过程中,何时规约?在构造语法树的过程中,何时规约? 当句柄出现在栈顶符号串中就可以规约。当句柄出现在栈顶符号串中就可以规约。如何知道在栈顶符号串中已经形成句柄?如何知道在栈顶符号串中已经形成句柄? 通过自底向上的分析算法来解释(优先关系)通过自底向上的分析算法来解释(优先关系) 8优先分析法又可分简单优先分析法和算符优先优先分析法又可分简单优先分析法和算符优先分析法。分析法。简简单单优优先先分分析析法法(规规范范归归约约)对对文文法法按按一一定原则求出所有文法符号间的优先关系;定原则求出所有文法符号间的优先关系;算法优先分析法(不规范归约)规定算法优先分析法(不规范归约)规定算符算符之间的优先关系)之间的优先关系) 6.1 6.1 自底向上优先分析法概述自底向上优先分析法概述96.3 6.3 算符优先分析法算符优先分析法 算符优先算符优先优先分析法优先分析法只规定算符(终结符)之间的优先关系。在只规定算符(终结符)之间的优先关系。在归约过程中只要找到句柄就归约,不必考虑归约过程中只要找到句柄就归约,不必考虑归约到哪个非终结符,因此不是规范归约。归约到哪个非终结符,因此不是规范归约。特点:速度快,特别适合于表达式的分析特点:速度快,特别适合于表达式的分析通过算符之间的优先关系来确定句柄通过算符之间的优先关系来确定句柄10先看一个例题:先看一个例题:例例. 已知文法已知文法GE: EE+E E E*E E i输入串输入串i+i*i ,归约过程如下,归约过程如下11步骤步骤符号栈符号栈输入符号串输入符号串优先关系优先关系 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 # 接受接受动作动作12分析可知:若只从移进分析可知:若只从移进归约的角度来考虑,归约的角度来考虑,在第在第6步时栈顶已出现了句柄步时栈顶已出现了句柄E+E,可以进行,可以进行归约了,但是明显是错误的,因为这样就不归约了,但是明显是错误的,因为这样就不符合算术运算规律符合算术运算规律 。所以对于表达式,我们可以人为地规定其算所以对于表达式,我们可以人为地规定其算符的优先顺序,即给出优先级别和同一级别符的优先顺序,即给出优先级别和同一级别的结合性。的结合性。13算符文法定义:算符文法定义:设有一文法设有一文法G,如果如果G中没有形如中没有形如ABC的产生式,其中的产生式,其中B和和C为非终结符,则称为非终结符,则称G为为算符文法算符文法(或称或称OG文法文法)。 即任何一个产生式中都不包含两个非终结即任何一个产生式中都不包含两个非终结符相邻的情况,就是算符文法。符相邻的情况,就是算符文法。 14性质性质1:在算符文法中任何句型都不包含两个:在算符文法中任何句型都不包含两个相邻的非终结符。相邻的非终结符。性质性质2:如果:如果Ab或(或(bA)出现在算符文法的句)出现在算符文法的句型型 中,其中中,其中A VN, b VT,则,则 中任何中任何含含b的短语必含有的短语必含有A。(含(含b的短语必含的短语必含A,含,含A的短语不一定含的短语不一定含b) 15算符优先关系的定义:算符优先关系的定义:设设G是一个算符文法,是一个算符文法,a和和b是任意两个终结是任意两个终结符,符,A,B,C是非终结符,算符优先关系如是非终结符,算符优先关系如下:下: (1)a=b当且仅当当且仅当G中含有形如中含有形如Aab或或AaBb的产生式的产生式; (2) a b当且仅当当且仅当G中含有形如中含有形如ABb的的产生式,且产生式,且Ba或或BaC 。16算符优先文法的定义:算符优先文法的定义: 设有一不含设有一不含 产生式的算符文法产生式的算符文法G,如果对,如果对任意两个终结符任意两个终结符a,b之间至多只有之间至多只有= ,三三种关系的一种成立,则称种关系的一种成立,则称G是一个算符优先文是一个算符优先文法法(也称也称OPG文法文法)。 即即a b,a b,a b只有一种成立,但允许只有一种成立,但允许a b,b a同时存在。同时存在。17例:已知表达式文法例:已知表达式文法GE: EE+E | E*E | (E) | i 证明证明GE不是不是OPG文法。文法。证明如下:证明如下:因为:因为:EE+E , EE*E 则有则有 + *所以不是算符优先文法。所以不是算符优先文法。18 自底向上分析方法,也称移进归约分析法,是推自底向上分析方法,也称移进归约分析法,是推导的逆过程。导的逆过程。 算法优先分析法(不规范归约)规定算法优先分析法(不规范归约)规定算符算符之间之间的优先关系)的优先关系) 文法符号之间的优先关系有三种:大于、小于和文法符号之间的优先关系有三种:大于、小于和等于。等于。 算符优先文法算符优先文法(也称也称OPG文法文法),它是一个算符文法,它是一个算符文法,不含不含 产生式,且对任意两个终结符产生式,且对任意两个终结符a,b之间至多只之间至多只有有= ,三种关系的一种成立。三种关系的一种成立。教学总结19教材教材P122练习练习: 2(1),3(1)作 业20课题:课题:算符优先关系表和算符优先分析法目的要求:目的要求: 1.掌握算符优先关系表的构造方法; 3.掌握算符优先分析法及其局限性教学重点:教学重点: 1.符优先关系表的构造 2.算符优先分析法的实现;教学难点教学难点 : 算符优先关系表的构造教学课时:教学课时:2教学方法:教学方法:多媒体教学教学内容和步骤教学内容和步骤 :(如下) 第第 十三十三 讲讲21三、三、 算符优先关系表算符优先关系表 用表格形式来表示各终结符号的优先关系,这用表格形式来表示各终结符号的优先关系,这种表称为优先关系表。种表称为优先关系表。 构造优先关系表的方法:构造优先关系表的方法:按照定义来构造按照定义来构造 按关系图来构造按关系图来构造 首先引入两个概念:首先引入两个概念:firstVT集合集合lastVT集合集合first(B)=b|Bb 或或 BCblastVT(B)=a|Ba 或或 BaC +221) = 关系关系直接看产生式的右部,若出现了直接看产生式的右部,若出现了A ab或或A aBb,则,则a=b2) 关系关系求出每个非终结符求出每个非终结符B的的FIRSTVT(B)若若AaB,则,则 bFIRSTVT(B),a 关系关系求出每个非终结符求出每个非终结符B的的LASTVT(B)若若ABb,则,则 aLASTVT(B),ab三种算符优先关系的计算:三种算符优先关系的计算:23例:已知文法如下,计算优先关系例:已知文法如下,计算优先关系 E#E# EE+T ET TT*F TF FPF FP P(E ) Pi24解解: (1)先先求求firstVT和和lastVT集集first(E)=#first(E)=+,*, ( , i first(T)=*, ( , i first(F)=, ( , i first(P)= ( , i lastVT(E)=#lastVT(E)=+,*, ) , i lastVT(T)=*, ) , i lastVT(F)= ) , i lastVT(P)= i , ) 25(2) 求求 = 关系关系E#E# # = #P(E) ( = )(3) 求求 关系关系E #E# 则则 # first(E) 所以所以 # +, # *, # , # ( , # i 26E E+T 则则 + first(T) 所以所以 + *, + , + ( , + iTT*F 则则 * first(F) 所以所以 * , * ( , * iFPF 则则 first(F) 所以所以 , ( , iP(E ) 则(则(first(E) 所以所以 ( +, ( *, ( , ( ( , ( 关系关系E #E# 则则 lastVT(E) # 所以所以 + #, * # ,# , ) #, i #EE+T 则则lastVT(E) + 所以所以 + +, * +, + , ) +, i +TT*F 则则lastVT(T) * 所以所以 *, *, i *, ) *FPF 则则lastVT(P) 所以所以 i , ) P(E) 则则lastVT(E) ) 所以所以 + ) , *) , ) , i ) , ) )28算符优先关系表算符优先关系表 +*i()#+*i(#= 29算符优先分析算法:算符优先分析算法:归约过程中,只考虑终结符之间的优先关系归约过程中,只考虑终结符之间的优先关系来确定句柄,而与非终结符无关。这样去掉了来确定句柄,而与非终结符无关。这样去掉了单非终结符的归约,所以用算符优先分析法的单非终结符的归约,所以用算符优先分析法的规约过程与规范归约是不同的规约过程与规范归约是不同的.为解决在算符优先分析过程中如何寻找句柄,为解决在算符优先分析过程中如何寻找句柄,引进最左素短语的概念引进最左素短语的概念30算符文法的任一句型有如下形式:算符文法的任一句型有如下形式:#N1a1N2a2.NnanNn+1#,若若Niai.NjajNj+1为句柄,为句柄,则有则有ai-1 ai+1对于算符优先文法,若句型对于算符优先文法,若句型r中中含有含有aNb(或或ab) 若若ab,则在则在r中必有含中必有含a而不含而不含b的短语存在的短语存在若若a=b,则在则在r中含有中含有a的短语必含有的短语必含有b,反之反之亦然亦然31最左素短语最左素短语: 定义:设有文法定义:设有文法GS,其中句型的,其中句型的素短语素短语是一个短语,它至少包含一个终结符,并是一个短语,它至少包含一个终结符,并除自身外不包含其它素短语,最左边的素除自身外不包含其它素短语,最左边的素短语称短语称最左素短语最左素短语。 例:文法例:文法GE: EE+T|T TT*F|F FPF|P P(E)|i句型句型#T+T*F+i#的语法树如下:的语法树如下:32EET+E+TFTT*FPi根据语法树可知:根据语法树可知:句型句型#T+T*F+i#的的短语有:短语有:T ;T*F ;T+T*F ;i;T+T*F+i .33根据素短语的定义可知:根据素短语的定义可知: i和和T*F为素短语。为素短语。其中:其中:T+T*F (含其他含其他T*F素短语素短语)和和 T+T*F+i 不是素短语。不是素短语。T*F为最左素短语。为最左素短语。六、算符优先分析法的局限性六、算符优先分析法的局限性34 算符优先关系表是指用表格形式来表示各终结符算符优先关系表是指用表格形式来表示各终结符号的优先关系的表。号的优先关系的表。 为分析算符之间的优先关系,引入两个概念:为分析算符之间的优先关系,引入两个概念:firstVT集合和集合和lastVT集合:对于非终结符集合:对于非终结符B,有,有firstVT (B)=b|Bb 或或 BCblastVT(B)=a|Ba 或或 BaC 为解决在算符优先分析过程中如何寻找句柄,引为解决在算符优先分析过程中如何寻找句柄,引进最左素短语的概念。进最左素短语的概念。 算符优先分析法算符优先分析法只适用于对表达式的分析,其特只适用于对表达式的分析,其特点是分析速度快。点是分析速度快。教学总结35教材教材P122练习练习: 4 作 业36部分资料从网络收集整理而来,供大家参考,感谢您的关注!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号