文法例1 文法Gz:Z→D Z→zD D→0|11..9 句子12的推导 Z→ZD→DD→1D→12 Z→ZD→DD→D2→12 D D 2
文法例1 文法Gz:Z → D Z → Z D D → 0 |1 |…|9 句子12的推导: Z ZD DD 1D 12 Z ZD DD D2 12 Z Z D D 1 2
文法例2 今文法G=({+,*,i,(,)},[E},E,P,其中P为: E→i E→E+E E→E*E E→(E) 句型i*i+i:
文法例2 ❖文法G=({+,*,i,( ,)},{E},E,P),其中P为: ⚫ E → i ⚫ E → E + E ⚫ E → E * E ⚫ E → ( E ) ❖ 句型i * i + i :
推导1 E→E+E→E*E+E→i*E+E ii +e ki + i 推导2 E→E*E→i*E →i*E+E→i*i+E→i*i+i E E E E 推导1的语法树 推导2的语法树
推导1: E E + E E * E + E i * E + E i * i + E i * i + i E + E E E * E i i 推导1的语法树 i E E * E E + E i i 推导2的语法树 i 推导2: E E * E i * E i * E + E i * i + E i * i + i
<stm→if<Exp〉then<Stm>else<Stm> <Stm> = if <Exp> then <Stm <Stm→ 假设有条件语句 then if then s else 2 则可有下图所示的两棵不同的语法分析树 <Stm> <Stm> i f <exp> then <stm else<stm> if <Exp> then <st f<Exp> then <S e1 if <Exp> then <stm> else <st f语句的二义性
<Stm> →if <Exp> then <Stm> else <Stm> <Stm> →if <Exp> then <Stm> <Stm> → ...... 假设有条件语句 if e1 then if e2 then s1 else s2 则可有下图所示的两棵不同的语法分析树: if语句的二义性 if if then <Stm> <Stm> <Stm> <Stm> <Exp> then else <Exp> e1 e2 s1 s2 <Stm> <Stm> <Stm> <Stm> if then else if then <Exp> <Exp> e1 e2 s1 s1
文法二义性的消除 口二义性文法的判定是递归不可解的 消除二义性的方法: 1.设置一规则,该规则可在产生二义 性的情况下,指出哪一个分析树是正确的 2将文法改变成一个强制正确分析树 的构造格式
文法二义性的消除 ❑二义性文法的判定是递归不可解的 ❑消除二义性的方法: ⚫ 1.设置一规则,该规则可在产生二义 性的情况下,指出哪一个分析树是正确的 ⚫ 2.将文法改变成一个强制正确分析树 的构造格式