第2章 一个简单的语法制导翻译器
2.2 语法定义
主要描述了“上下文无关文法”2.2.1
1)
S1 = aa+
S2 = S1a*
2) *
+
a a a
3)该文法生成的语言是由+和*组成的后缀表达式,怎么证明呢?
2.2.2 同不懂怎么证明
1)前面n个0后面n个1组成的串
2)+/-组成的关于a计算的前缀表达式
3)空串或成对出现的单个或嵌套括号组成的表达式
4)空串或a和b组成的任意表达式
5)由+连接起来的1个或多个a,可以加括号,每个a后面可以有0个或多个*
2.2.3
1)没有二义性
2)有,跟例2.1中语法一样
3)没有
4)有,ab可以随意结合
5)有,S+S和SS无法确定如何结合
2.2.4
1)S -> SS+|SS-|SS*|SS/|a
2)left -> left,expr | expr
3)right -> expr,right|expr
4)这道题中文版翻译有误,应该将书中“标识符”去掉。
expr -> expr+term | expr-term|term
term -> term*factor | term/factor|fa