《编译原理》(陈火旺版)课后作业参考答案ch6-10.pdf
第6章属性文法和语法制导翻译
7.下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:
S→∣L
L→LB∣B
试设计求的属性文法,其中,已知B的综合属性c,给出由B产生的二进位的结果值。例如,
输入时,=,其中第一个二进位的值是4,最后一个二进位的值是。
【答案】
产生式语义规则
-
S→L.L{:=+*2}
12
S→L{:=}
{:=*2+;
L→LB
1
L.length:=+1}
{:=;
L→B
L.length:=1}
B→0{:=0}
B→1{:=1}
11.设下列文法生成变量的类型说明:
L→idL
L→,idL∣:T
(1)构造一下翻译模式,把每个标识符的类型存入符号表;参考例。
【答案】
产生式语义规则
-
L→idL{:=+*2}
1
L→,idL{:=}
1
{:=*2+;
L→:T
L.length:=+1}
{:=;
T→integer
L.length:=1}
T→real{:=0}
第7章语义分析和中间代码产生
1.给出下面表达式的逆波兰表示(后缀式):
【答案】
原式后缀式
(1)a*(-b+c)ab-c+*
(2)a+b*(c+d/e)abcde/+*+
(3)–a+b*(-c+d)a-bc-d+*+
(4)notAornot(CornotD)AnotCDnotornotor
(5)(AandB)or(notCorD)ABandCnotDoror
(6)(AorB)and(CornotDandABorCDnotEandorand
E)
(7)if(x+y)*z=0