编译原理4章-2-2+算符优先.pptxVIP

  • 20
  • 0
  • 约4.64千字
  • 约 37页
  • 2019-11-27 发布于福建
  • 举报
4-2-2 语法分析 算符优先三、用栈实现移进归约分析移入归约分析器使用了一个栈来保存文法符号, 用输入缓冲区来存放待分析的串w,$为栈底符号和输入结束标记。初始时,栈和输入串的情形为: 栈 输入串 $w $ 终止时,形成如下格局: 栈 输入串 $S$  考虑文法4.2: E→E+T|T T→T*F|F F→(E)|idid1*id2+id3的分析过程如下: 步骤符号栈输入串动作0 $id1*id2+id3 $ prepare1$id1*id2+id3 $移入 2$F*id2+id3 $归约F→id3$T *id2+id3 $归约T→F 移进$T*4 id2+id3 $5$T* id2 +id3 $移进归约F→id6$T*F +id3 $ 归约T→T*F$T +id3 $ 7 归约E→T$E +id3 $8$E+ id3 $移入910 $E+id3$移入归约F→id11$E+F$12$E+T$归约T→F13归约E→E+T$$E$access14 $E 移进归约的基本动作:移进:把下一个输入符号移进栈归约:栈顶已形成句柄右端,需向栈 内搜索确定句柄的左端,并选 择正确的非终结符进行替换接受:分析成功出错:调用错误处理程序 四、句柄的识别解决两个问题: 1、最左性:栈顶形成的一定是最左直接短语2、判断句柄的左、右端:优先法状态法 5.2 算符优先分析四则运算的优先规则: 先乘除后加减,同级从左到右考虑二义文法文法G(E):G(E): E ? i| E+E|E-E|E*E|E/E|(E)它的句子有几种不同的规范规约。归约即计算表达式的值。归约顺序不同,则计算的顺序也不同,结果也不一样。如果规定算符的优先次序,并按这种规定进行归约,则归约过程是唯一的。起决定作用的是相邻的两个算符之间的优先关系。所谓算符优先分析法就是定义算符之间的某种优先关系,借助于这种关系寻找“可归约串”和进行归约。定义4. 4 算符文法一个文法,如果它的任一产生式的右部都不含两个相邻的非终结符,即不含有形如A→……QR……的产生式,则该文法是算符文法定义4.5 相邻若S= …ab …或S= …aQb …,称a,b相邻 定义关系① a b:当且仅当存在产生式A→…ab… 或A→…aTb…,称a、b同等归约②a b:当且仅当存在产生式A→…aT…, 且T=b…,或T=Rb…,称a后 于b归约③a b:当且仅当存在产生式A→…Tb…, 且T=…a,或T=…aR,称a先 于b归约④ab无关系:当且仅当a与b在任何句型 都不相邻 算符优先文法如果一个算符文法G中的任何终结符对(a,b)至多只满足下述三关系之一:ab,ab, ab 则称G是一个算符优先文法。 例:考虑下面的文法G(E): (1) E→E+T | T (2) T→T*F | F (3) F→P ? F | P (4) P→(E) | i由第(4)条规则,有 ‘(’‘)’;由规则E→E+T和T?T*F, 有 +*;由(2) T→T*F 和(3) F→P ? F ,可得*↑;由(1)E→E+T和E ? E+T,可得++;由(3)F→P?F和F ? P?F,可得↑↑。由(4)P→(E)和 E?E+T?T+T?T*F+T?F*F+T?P↑F*F+T?i↑F*F+T 有 (+、(*、(↑和(i。 优先关系表2. ab 当且仅当G中含有形如P→…aR…的产生式, 而R b…或R Qb…;3. ab 当且仅当G中含有形如P→…Rb…的产生式,而 R …a或R …aQ。从算符优先文法G构造优先关系表的算法。通过检查G的每个产生式的每个候选式,可找出所有满足ab的终结符对。1. ab 当且仅当文法G中含有形如P→…ab…或P→…aQb…的产生式;确定满足关系和的所有终结符对:从算符优先文法G构造优先关系表的算法。通过检查G的每个产生式的每个候选式,可找出所有满足ab的终结符对。确定满足关系和的所有终结符对:首先需要对G的每个非终结符P构造两个集合FIRSTVT(P)和LASTVT(P):比较比较有了这两个集合之后,就可以通过检查每个产生式的候选式确定满足关系和的所有终结符对。假定有个产生式的一个候选形为…aP… 那么,对任何b?FIRSTVT(P),有 ab。假定有个产生式的一个候选形为…Pb… 那么,对任何a?LASTVT(P),有 ab。首先讨论构造集合FIRSTVT(P)的算法。按其定义,可用下面两条规则来构造集合FIRSTVT(P):1. 若有产生式P→a…或P→Qa…,则a?FIRSTVT(P);2. 若a?FIRSTVT(Q),且有产生式P→Q…

文档评论(0)

1亿VIP精品文档

相关文档