[工学]北航计算机学院编译习题讲解
习题课
(5章之后)
习题讲解
2008年7月2 日 1
教材第五章
• 语法制导的翻译
2008年7月2 日 2
P138: 1.试分别构造一个符号串翻译文法,它将由一般中缀
表达式文法所定义的中缀表达式翻译成波兰前缀表达式和
波兰后缀表达式。
解:翻译为波兰前缀表达式 翻译为波兰后缀表达式
的文法为: 的文法为:
E->@+E+T E->E+T@+
E->T E->T
T->@*T*F T->T*F@*
T->F T->F
F->(E) F->(E)
F->@ii F->i@i
2008年7月2 日 3
P138: 2.构造一符号串翻译文法,它将接受由0和1组成的任意输入符号串,
并产生下面的输出符号串:
(a) 输入符号串倒置(c) 输入符号串本身。
(a )S->0S@0 或 S->@0S0
S->1S@1 S->@1S1
S->ε S->ε
(c )E->0@0E
E->1@1E
E->ε
2008年7月2 日 4
P138: 3. 以下的符号串翻译文法能做什么?
->@C EN @HI GL @N I @E S @SE H
解:可以识别终结符号串ENGLISH ,并输出符号串CHINESE。
4. 有特殊的翻译文法产生的两个活动序列是:
@x@yb@z和@qa@x@yb@z@x@x@yb@z@y
由这个翻译文法删掉诸动作符号得到的输入文法是:
->a
->b
这是个什么翻译文法?
解:其文法为:
->@x@yb@z
->@qa@x@y
2008年7月2 日 5
5.下面给出带有开始符号 的翻译文法,试列出属于这个文法所定义的
语法制导翻译的所有对偶。
->xc@y
->@yd@xc@zb
->a@y
->d
->b@x
①做题情况
该题做的不错,不过有些同学的题目抄错了,
->@xc@y ,所以答案就写错了;还有相当的同学在写对偶时,
没有把符号“@”写上
解:
(1)dcb @y@x@z
(2)dxcb @x@y
(3)baxcb @x@y@x@y