这里再给出一种翻译模式,也是把中缀形式的算术表达式映射到后缀波兰表示:
E→ T + E { E=TE+ }
E→ T { E=T }
T→ F * T { T=FT * }
T→ F { T =F }
F→(E) { F = E }
F→ a { F = a }
句子a+a*a 的一个推导过程:
E
T+E
F+E
a+E
a+T
a+F*T
a+a*T
a+a*F
a+a*a
伴随着句子a+a*a的这个推导过程,按照上述翻译模式所进行的一步步翻译:
E
TE+
FE+
aE+
aT+
aFT*+
aaT*+
aaF*+
aaa*+
语法制导翻译的具体实现途径不困难。假定有一个LR语法分析器,现在把它的分析栈扩充,使得每个文法符号都跟有语义值,即把栈的结构看成图8.5所示那样。