3.1上下文无关文法 ·例E→E+E|E*E|(E)|-EIid 最左推导 E→m-E→m-(E)→m-(E+E) →m-(id+E)→m-(id+id 最右推导(规范推导)》 E→m-E→m-(E)→m-(E+E) →m-(E+id)→m-(id+id
3.1 上下文无关文法 • 例 E → E + E | E E | (E ) | − E | id • 最左推导 E lm −E lm −(E) lm −(E + E) lm −(id + E) lm −(id + id) • 最右推导(规范推导) E rm −E rm −(E) rm −(E + E) rm −(E + id) rm −(id + id)
3.1上下文无关文法 3.1.3分析树 ·例E→E+E|E*E(E)|-E|id id g-
3.1 上下文无关文法 3.1.3 分析树 • 例 E → E + E | E E | (E ) | − E | id E − E ( E ) E + E id id
3.1上下文无关文法 3.1.4二义性 E→E*E E →E+E →id*E →E*E+E →id*E+E →id*E+E →id*id+E →id*id+E →id*id+id →id*id+id 两个不同的最左推导
3.1 上下文无关文法 3.1.4 二义性 E E E E E + E id E E E +E id E + E id E + E id id + E id id + E id id + id id id + id 两个不同的最左推导
3.1上下文无关文法 3.1.4二义性 E→E*E E →E+E →id*E →E*E+E →id*E+E →id*E+E →id*id+E →id*id+E →id*id+id →id*id+id 两棵不同的语法树 E E id id id id a
3.1 上下文无关文法 3.1.4 二义性 E E E E E + E id E E E +E id E + E id E + E id id + E id id + E id id + id id id + id E 两棵不同的语法树 E E * + E E id id id E E id E * + E E id id
3.2语言和文法 文法的优点 文法给出了精确的,易于理解的语法说明 自动产生高效的分析器 可以给语言定义出层次结构 以文法为基础的语言的实现便于语言的修改 文法的问题 文法只能描述编程语言的大部分语法,不能描述 语言中上下文有关的语法特征
3.2 语言和文法 • 文法的优点 –文法给出了精确的,易于理解的语法说明 –自动产生高效的分析器 –可以给语言定义出层次结构 –以文法为基础的语言的实现便于语言的修改 • 文法的问题 –文法只能描述编程语言的大部分语法,不能描述 语言中上下文有关的语法特征