编译原理习题及答案

编译原理模拟试卷及答案(二) 学生姓名:_____________ 学号:___________________学生系别:_____________ 专业:______________ 年级___________班级_____________ 课程名称:编译原理 课程性质:专业必修一、 文法G[
(12%)aba(a|b)*a答: 三、证明下面文法是SLR(1)文法,并构造其SLR分析表 (15%)
(16%)(1) 5+6 ´ (a + b);(2) ØAÚ( B Ù (C Ú D));(3) for j:=1 to 10 do a[j + j]:=0;(4) if x > y then x:=10 else x:= x + y;答:⑴ 100: t1:=a+b 101: t2:=6*t1 102: t3:=5+t2⑵ 100: if A goto 102 101: goto T 102: if B goto 104 103: goto F 104: if C goto T 105: goto 106 106: if D goto T 107: goto F⑶ 100: j:=1 101: if j>10 goto NEXT 102: i:=j+j 103: a[i]:=0 104: goto 101⑷ 100: if x>y goto 102 101: goto 104 102: x:=10 103: goto 105 104: x:=x+y 105:五、条件语句可形式定义为: (20%) à IF 1 ELSE 2其中1;goto L2;L1: 2;L2:其中 e 为
试用句法制导翻译的方法写出符合上述要求的条件语句的翻译方案答:条件语句的属性翻译文法为:1 {®2{GEN(LABEL,
答:调用记录中各项的分布情况如图6.29所示:七、设基本块p由如下语句构成:(10%)T0: =3.14; T1:=2*T0; T2:=R+r; A:=Tl*T2; B:=A; T3:=2*T0;T4:=R+r;T5:=T3*T4;T6:=R-r;B:=T5*T6;a)试给出基本块p的DAGb)根据DAG重写基本块c)若p所在的程序中只有A和B在p后将要被引用,试写出优化后的基本块答:1)基本块 p 的DAG如图7.1所示图7.1 基本块 p 的DAG2)因为DAG重写基本块必须满足的约束条件是:DAG中各节点计算时,其子节点已经完成计算所以重写序列为1、3、4、5、7、2、6、8即可重写为:T0:=3.14;T2:=R+r;T4:=T2;T6:=R-r;T1:=6.28;T3:=T1;A:=6.28*T2;T5:=A;B:=A*T6;3)因为只有A、B将在 p 后被引用,所以最后优化的代码为:S1:=R+r ;S2:=R-r ;A:=6.28*S1;B:=A*S2;其中,S1、S2为临时变量。