语法分析自下而上分析.pptx
《语法分析自下而上分析.pptx》由会员分享,可在线阅读,更多相关《语法分析自下而上分析.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.1 自下而上分析基本问题自下而上分析:从输入开始,逐步进行“归约”,直至归约到文法的开始符号。第1页/共51页5.1.1 归约自下而上分析法是一种“移进-归约”法。基本思想:用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。第2页/共51页5.1.1 归约例:设文法GS:(1)S aAcBe (2)A b (3)A Ab (4)B d试对abbcde进行“移进-归约”分析。a bbcdeba bcdeAa bcdebAa cdeAa cdecAa dedcAa eabbcdeeBcAa S 第3
2、页/共51页5.1.1 归约例:设文法GS:(1)S aAcBe (2)A b (3)A Ab (4)B d试对abbcde进行“移进-归约”分析。第4页/共51页5.1.1 归约分析树和语法树不一定一致。自下而上分析过程:边输入单词符号,边归约。核心问题:识别可归约串bdbaceSABA第5页/共51页5.1.2 规范归约简述定义:令G是一个文法,S是文法的开始符号,假定是文法G的一个句型,如果有 且 则则 称是句型称是句型相对于非终结符相对于非终结符A A的的短语短语。特别是,如果有特别是,如果有A A,则称则称 是句型是句型相相对于规则对于规则A A 的的直接短语直接短语。一个句型的最。
3、一个句型的最左直接短语称为该句型的左直接短语称为该句型的句柄句柄。第6页/共51页5.1.2 规范归约简述例:文法GE:EE+T|T TT*F|F F(E)|F|id 考虑文法GE上的句子id1+id2*id3。其最右推导和分析树如图5.1(a)、(b)所示。分析树中的叶子与短语、直接短语和句柄有下述关系。短语:以非终结符为根的子树中所有从左到右排列的叶子;直接短语:只有父子关系的树中所有从左到右排列的叶子(树高为2);句柄:最左边父子关系树中所有从左到右排列的叶子(句柄是唯一的)。第7页/共51页图5.1 id1+id2*id3的最右推导、分析树与短语(a)最右推导;(b)分析树;(c)短语
4、 根据定义,从文法开始符号经过0步推导得到E1,从E1经过若干步推导得到id1+id2*id3,所以id1+id2*id3是句型id1+id2*id3相对于E1的短语(其中和均为,是句子的全体)。考虑推导E1=E2+id2*id3=T2+id2*id3=F1+id2*id3=id1+id2*id3,id1是相对于非终结符E2、T2和F1的短语(其中为,为+id2*id3),特别是相对于F1的直接短语,也是句柄。id1+id2不是句型id1+id2*id3中相对于任何非终结符的短语,因为找不到任何一个非终结符,它的子树中的所有叶子构成id1+id2。第8页/共51页EFFTTTi1+*EFi3i
5、25.1.2 规范归约简述例:考虑文法GE:ET|E+T TF|T*F F(E)|i和句型i1*i2+i3:在一个句型对应的语法树中,以某非终结符为根的两代以上的子树的所有末端结点从左到右排列就是相对于该非终结符的一个短语,如果子树只有两代,则该短语就是直接短语。E E+T E+F E+i3 T+i3 T*F+i3 T*i2+i3 F*i2+i3 i1*i2+i3短语:i1,i2,i3,i1*i2,i1*i2+i3直接短语:i1,i2,i3句柄:i1第9页/共51页5.1.2 规范归约简述可用句柄来对句子进行归约例:设文法GS:(1)S aAcBe (2)A b (3)A Ab (4)B d句
6、型 归约规则abbcde (2)A baAbcde (3)A AbaAcde (4)B daAcBe (1)S aAcBe S第10页/共51页5.1.2 规范归约简述定义:假定是文法G的一个句子,我们称序列 n,n-1,0 是的一个规范归约,如果此序列满足:1 n=2 0为文法的开始符号,即0=S 3 对任何i,0 i n,i-1是从i经把句柄替换成为相应产生式左部符号而得到的。第11页/共51页5.1.2 规范归约简述把上例倒过来写,则得到:S aAcBe aAcde aAbcde abbcde 显然这是一个最右推导。规范归约是关于是一个最右推导的逆过程最左归约 规范推导由规范推导推出的句
7、型称为规范句型。规范归约的中心问题:确定句型的句柄。第12页/共51页5.1.2 规范归约简述最右推导,推导的每一步结果都是一个右句型。该推导即分析树“剪句柄”的全过程。图3.18 剪句柄的过程(a)句子;(b)剪去b之后;(c)剪去Abc之后;(d)剪去d之后;(e)开始符号 第13页/共51页5.1.3 符号栈的使用与语法树的表示从分析树上直观地看,“剪句柄”的方法十分简单。但是若在语法分析器中实现剪句柄,则有两个问题必须解决:确定右句型中将要归约的子串(确定句柄);确定如何选择正确的产生式进行归约。具体实现采用移进归约方法,用一个栈“记住”将要归约句柄的前缀,并用一个分析表来确定何时栈顶
8、已形成句柄,以及形成句柄后选择哪个产生式进行归约。第14页/共51页5.1.3 符号栈的使用与语法树的表示在移进归约分析模式中,符号栈的使用有以下四种操作形式。移进(shift):把当前输入中的下一个终结符移进栈;归约(reduce):句柄在栈顶已形成,用适当产生式左部代替句柄;接受(accept):宣告分析成功;报错(error):发现语法错误,调用错误恢复例程。第15页/共51页考察文法GS:SaABe Ab AAbc Bd 的输入序列abbcde,移进归约方法分析的符号栈变化过程如下所示。步骤栈内容当前输入动作(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)#a#ab
9、#aA#aAb#aAbc#aA#aAd#aAB#aABe#Sabbcde#bbcde#bcde#bcde#cde#de#de#e#e#shiftshiftreduced by Abshiftshiftreduced by AAbcshiftreduced by Bdshiftreduced by SaABeaccept第16页/共51页5.2 算符优先分析考虑二义文法文法G(E):G(E):E i|E+E|E-E|E*E|E/E|(E)它的句子有几种不同的规范规约。归约即计算表达式的值。归约顺序不同,则计算的顺序也不同,结果也不一样。起决定作用的是相邻的两个算符之间的优先关系。如果规定算符的优
10、先次序,并按这种规定进行归约,则归约过程是唯一的。所谓算符优先分析法就是定义算符之间的某种优先关系,借助于这种关系寻找“可归约串”和进行归约。第17页/共51页5.2 算符优先分析定义任何两个可能相继出现的终结符a与b的优先关系:三种关系a b a的优先级低于ba b a的优先级等于ba b a的优先级高于b注意:与数学上的、=不同,a b并不意味着b a第18页/共51页5.2.1 算符优先文法及优先表构造一个文法,如果它的任一产生式的右部都不含两个相继(并列)的非终结符,即不含如下形式的产生式右部:QR 则我们称该文法为算符文法。约定:a、b代表任意终结符;P、Q、R代表任意非终结符;代表
11、由终结符和非终结符组成的任意序列,包括空字。第19页/共51页假定G是一个不含-产生式的算符文法。对于任何一对终结符a、b,我们说:1.ab 当且仅当文法G中含有形如Pab或PaQb的产生式;如果一个算符文法G中的任何终结符对(a,b)至多只满足下述三关系之一:a b,a b,a b 则称G是一个算符优先文法。2.ab 当且仅当G中含有形如PaR的产生式,而R b或R Qb;3.ab 当且仅当G中含有形如PRb的产生式,而R a或R aQ。第20页/共51页5.2.1 算符优先文法及优先表构造例:考虑下面的文法GE:(1)EE+T|T (2)TT*F|F (3)FP F|P (4)P(E)|i
12、由第(4)条规则,有();由规则EET和TT*F,有 *;由(2)和(3),可得*;由(1)EET和E E+T,可得+;由(3)FPF和F PF,可得 。由(4)P(E)和 EE+TT+TT*F+TF*F+T PF*F+TiF*F+T 有(+、(*、(和(i。第21页/共51页5.2.1 算符优先文法及优先表构造优先关系表(#为终结符)第22页/共51页从算符优先文法G构造优先关系表的算法:通过检查G的每个产生式的每个候选式,可找出所有满足ab的终结符对。确定满足关系和的所有终结符对:首先需要对G的每个非终结符P构造两个集合FIRSTVT(P)和LASTVT(P):5.2.1 算符优先文法及优
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析 自下而上 分析
限制150内