2例6.4 由文法G:E一>E+E|E*EIE↑EI(E)川i 的终结符的优先关系表及上述分析算法 分析算术表达式i1+i2*i3#的过程。 输入串: i1+i2*i3# 育 a 分析过程 G岛空, i3 i2 ‘粉揽即蝶; + 0 # 日 之强pnB果 i2->OPND OPTR OPND
2 例6.4 由文法G: E —> E + E | E * E | E↑E | ( E ) | i 的终结符的优先关系表及上述分析算法 分析算术表达式 i1 + i2 * i3 # 的过程。 OPTR OPND 分析过程 ① OPND栈为空, ‘# ’->OPTR栈 ② i1->OPND ‘#’ <‘+’ , ‘+’- >OPTR i2->OPND # + i1 i2 * i3 t e 输入串 : i1 + i2 * i3 # ③‘+’< ‘*’ , ‘*’->OPTR i3->OPND ④‘*’ >‘# ’ , ‘*’弹出OPTR栈; i2 * i3 = t ->OPND ⑤ ‘+’ >‘# ’ , ‘+’弹出OPTR栈; t + i1 = e ->OPND ⑥ ‘#’ =‘# ’ , 分析成功; e 为整个表达式的结果 a θ
三算符优先分析 1算符优先文法 ①定义一 如果一个文法的任何产生式右部都不含两 个相继(并列)的非终结特,即不合有如下形式 的产生式右部: ...OQR... 则我们称该文法为算符文法
1 算符优先文法 ①定义一 如果一个文法的任何产生式右部都不含两 个相继(并列)的非终结符,即不含有如下形式 的产生式右部: …QR… 则我们称该文法为算符文法。 三 算符优先分析
②定义二 假定G是一个不含ε~产生式的算符文法。对于任 何一对终结符a、b,我们说: a=b, 当且仅当文法G中含有形如P->…ab 或P>…aQb…的产生式; (如:(E),则(=)) ●a≤b,当且仅当G中含有形如P->…aR…的产生 式,而Rb…或R当Qb…; ●a>b,当且仅当G中含有形如P->…Rb…的产生 式,而R占…a或R…aQ
②定义二 假定G是一个不含ε-产生式的算符文法。对于任 何一对终结符a、b,我们说: ⚫a b, 当且仅当文法G中含有形如P->…ab… 或P->…aQb…的产生式; (如:(E),则( )) ⚫a b, 当且仅当G中含有形如P->…aR…的产生 式,而R b… 或 R Qb…; ⚫a b, 当且仅当G中含有形如P->…Rb…的产生 式,而R …a 或 R …aQ
③定义三 如果一个算符文法G中的任何终结符对(a,b) 至多只满足下述三种关系之一: asb,a≤b,a>b 则称G是一个算符优先文法。 2从算符优先文法构造优先关系表
③定义三 如果一个算符文法G中的任何终结符对(a,b) 至多只满足下述三种关系之一: a b,a b,a b 则称G是一个算符优先文法。 2 从算符优先文法构造优先关系表
①构造优先关系表,就是要找出所有V一对之间的三种关 条,而对于三可以直接检查所有的G中P来得到。而≤,> 关系不易检查,故要定义二个集合。 ②FIRSTVT(P)={a|P5a…或FQa…,aEV而QEVN} ③LASTVT(P)=aP…a或P吉…aQ,aEVT而QEVN} 如该二集合成功,检查P,就可确定满足≤,>的(, b)对。 ⑤这是因为,假定有个产生式候选式: aP…,那么对任何b∈FIRSTVT(P),有a≤b; …Pb…,那么对任何a∈LASTVT(P),有a>b;
①构造优先关系表,就是要找出所有VT对之间的三种关 系,而对于 可以直接检查所有的G中P来得到。而 , 关系不易检查,故要定义二个集合。 ②FIRSTVT(P)={a|P a…或P Qa… ,a∈VT 而Q∈VN } ③LASTVT(P)={a|P …a或P …aQ,a∈VT 而Q∈VN } ④如该二集合成功,检查P,就可确定满足 , 的(a, b)对。 ⑤这是因为,假定有个产生式候选式: …aP…,那么对任何 b∈FIRSTVT(P),有a b; …Pb…,那么对任何 a∈LASTVT(P),有a b;