●此例中归约即计算表达式的值。归约顺序不同, 则计算的顺序也不同,结果也不一样。 ●起决定作用的是相邻的两个算符之间的优先关 系 如果规定算符的优先次序,并按这种规定进行 归约,则归约过程是唯一的。 ●所谓算符优先分析法就是定义算符之间的某种 优先关系,借助于这种关系寻找“可归约串” 和进行归约
此例中归约即计算表达式的值。归约顺序不同, 则计算的顺序也不同,结果也不一样。 起决定作用的是相邻的两个算符之间的优先关 系。 如果规定算符的优先次序,并按这种规定进行 归约,则归约过程是唯一的。 所谓算符优先分析法就是定义算符之间的某种 优先关系,借助于这种关系寻找“可归约串” 和进行归约
首先必须定义任何两个可能相继出现的 终结符a与b的优先关系 种关系 a<ba的优先级低于b a回ba的优先级等于b a·>ba的优先级高于b ●注意:与数学上的<>=不同,a<b并不 意味着b·>a
首先必须定义任何两个可能相继出现的 终结符a与b的优先关系 三种关系 a < . b a的优先级低于b a b a的优先级等于b a .> b a的优先级高于b 注意:与数学上的<>=不同,a < .b并不 意味着b .> a
2521算符优先文法及优先表 构造 个文法,如果它的任一产生式的右部都 不含两个相继(并列)的非终结符,即不含 如下形式的产生式右部: QR 则我们称该文法为算符文法。 约定: ●a、b代表任意终结符; ●P、Q、R代表任意非终结符; .代表由终结符和非终结符组成的任意序 列,包括空字
2.5.2.1 算符优先文法及优先表 构造 一个文法,如果它的任一产生式的右部都 不含两个相继(并列)的非终结符,即不含 如下形式的产生式右部: …QR… 则我们称该文法为算符文法。 约定: ⚫ a、b代表任意终结符; ⚫ P、Q、R代表任意非终结符; ⚫ ‘…’代表由终结符和非终结符组成的任意序 列,包括空字
假定G是一个不含e产生式的算符文法。 对于任何对终结符a、b,我们说: 1.a当且仅当文法G中含有形如 P→…ab.或P→aQb的产生式; 2.a<b当且仅当G中含有形如PaR..的产生式, 而R 成R、/即 3a>b当且仅当G中含有形如P→.Rb的产生式, 而R 戊R 如果一个算符文法G中的任何终结符对(a,b)至多只满足 下述三关系之一: a <b, a >b, a=b 则称G是一个算答优先文注
假定G是一个不含-产生式的算符文法。 对于任何一对终结符a、b,我们说: 1. a b 当且仅当文法G中含有形如 P→…ab…或P→…aQb…的产生式; 2. a <. b当且仅当G中含有形如P→…aR…的产生式, 而R b… + 或R → Qb… + ; 3. a .> b 当且仅当G中含有形如P→…Rb…的产生式, 而R …a或R …aQ。 + + 如果一个算符文法G中的任何终结符对(a,b)至多只满足 下述三关系之一: a <. b,a .> b, a b 则称G是一个算符优先文法
●例:考虑下面的文法G(E (1)E→E+TT (2)T→T*F|F (3)F→P↑F|P 4)P→(E 由第(4)条规则,有“少); 由规则E→E+T和T→TF,有十<*; ●由(2)和(3),可得*<个; 由(1)E→E+T和E→E+T,可得+少+ 由(3)F→P个F和F→P↑F,可得↑<↑。 ●由(4)P→(E和E→E+T→T+T→TF+T→FF+T →P个F*F+T→↑F*F+T 有(+、(*(↑和(<i
例:考虑下面的文法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和TT*F, 有 + < .* ; 由(2)和(3),可得* < .↑; 由(1)E→E+T和E E+T,可得+ .>+; 由(3)F→PF和F PF,可得↑ < . ↑ 。 由(4)P→(E)和 EE+TT+TT*F+TF*F+T P↑F*F+Ti↑F*F+T 有 (< . +、(< . * 、(< . ↑和(< . i