编译原理第二章分解.pptVIP

  • 25
  • 0
  • 约9.11千字
  • 约 44页
  • 2017-06-13 发布于湖北
  • 举报
* 4.2 文法的二义性问题 描述一个句子的文法不是唯一的; 对于一个句子的分析应是唯一的。 考虑文法:E→E+ E|E*E|(E)|i, 句子 (i*i+i) 推导一:E? (E) ? (E+E) ? (E*E+E) ? (i*E+E) ? (i*i+E) ? (i*i+i) 推导二:E? (E) ? (E*E) ? (i*E) ? (i*E+E) ? (i*i+E) ? (i*i+i) * 推导一对应的语法树 推导二对应的语法树 E(树根) ( E ) E * E E + E i i i 1 2 3 4 5 E(树根) ( E ) E + E E * E i i i 1 2 3 4 5 * 如果一个文法的句子存在两棵不同的分析树,那么该句子是二义性的。如果一个文法包含二义性的句子,则称这个文法是二义性的;否则,该文法是无二义性的。 * 几点说明: 1)一般来说,程序语言要求无二义性文法,对于条件语句,经常使用二义性文法描述它:S? if 条件 then 语句 ?if 条件 then 语句 else 语句 ?其它语句 二义性的句子:if e1 then if e2 then s1 else s2 2)在能驾驭的情况下,使用二义性文法。 3)

文档评论(0)

1亿VIP精品文档

相关文档