编译2高级语言及其语法描述_zss_.ppt

* * 2.3.2 语法树与二义性 用一张图表示一个句型的推导,称为语法树。 (i*i+i)的语法树 E ?(E) ?(E+E) ?(E*E+E) ?(i*E+E) ?(i*i+E) ?(i*i+i) E ?(E) ?(E+E) ?(E+i) ?(E*E+i) ?(E*i+i) ?(i*i+i) 一棵语法树是不同推导过程的共性抽象。 G(E): E ? i | E+E | E*E | (E) (i*i+i) * * 如果使用最左(右)推导,则一个最左(右)推导与语法树一一对应。 一个句型是否只对应唯一一棵语法树? * * 定义:如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。 G(E): E ? i|E+E|E*E|(E) 是二义文法。 语言的二义性:一个语言是二义性的,如果对它不存在无二义性的文法。 可能存在G和G’,一个为二义的,一个为无二义的。但L(G)=L(G’) 二义性问题是不可判定问题,即不存在一个算法,它能在有限步骤内,确切地判定一个文法是否是二义的。 可以找到一组无二义文法的充分条件。 * * 二义文法: G(E): E ? i|E+E|E*E|(E) 表达式 ?项|表达式+项 项 ? 因子 | 项*因子 因子 ? (表达式) | i 无二义文法: G(E): E ? T | E+T T ? F | T*F

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档