《编译原理》陈火旺版课后作业参考答案ch610Word版.docx
- 文档编号:5721834
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:23
- 大小:150.46KB
《编译原理》陈火旺版课后作业参考答案ch610Word版.docx
《《编译原理》陈火旺版课后作业参考答案ch610Word版.docx》由会员分享,可在线阅读,更多相关《《编译原理》陈火旺版课后作业参考答案ch610Word版.docx(23页珍藏版)》请在冰豆网上搜索。
《编译原理》陈火旺版课后作业参考答案ch610Word版
第6章属性文法和语法制导翻译
7.下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:
S→L.L∣L
L→LB∣B
B→0∣1
试设计求S.val的属性文法,其中,已知B的综合属性c,给出由B产生的二进位的结果值。
例如,输入101.101时,S.val=5.625,其中第一个二进位的值是4,最后一个二进位的值是0.125。
【答案】
产生式
语义规则
S→L1.L2
{S.val:
=L1.val+L2.val*2-L2.length}
S→L
{S.val:
=L.val}
L→L1B
{L.val:
=L1.val*2+B.val;
L.length:
=L1.length+1}
L→B
{L.val:
=B.val;
L.length:
=1}
B→0
{B.val:
=0}
B→1
{B.val:
=1}
11.设下列文法生成变量的类型说明:
L→idL
L→,idL∣:
T
T→integer∣real
(1)构造一下翻译模式,把每个标识符的类型存入符号表;参考例6.2。
【答案】
产生式
语义规则
L→idL1
{S.val:
=L1.val+L2.val*2-L2.length}
L→,idL1
{S.val:
=L.val}
L→:
T
{L.val:
=L1.val*2+B.val;
L.length:
=L1.length+1}
T→integer
{L.val:
=B.val;
L.length:
=1}
T→real
{B.val:
=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(CornotDandE)
ABorCDnotEandorand
(7)if(x+y)*z=0
then(a+b)↑c
elsea↑b↑c
ifxy+z*0=
thenab+c↑
elseab↑c↑
3.请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。
【答案】
三元式
(1)
+
a
b
(2)
-
(1)
/
(3)
+
c
d
(4)
*
(2)
(3)
(5)
+
a
b
(6)
+
(5)
c
(7)
-
(4)
(6)
四元式
(1)
+
a
b
T1
(2)
-
T1
/
T2
(3)
+
c
d
T3
(4)
*
T2
T3
T4
(5)
+
a
b
T5
(6)
+
T5
c
T6
(7)
-
T4
T6
T7
间接三元式
(1)
+
a
b
(2)
-
(1)
/
(3)
+
c
d
(4)
*
(2)
(3)
(5)
+
(1)
c
(6)
-
(4)
(5)
间接码表:
(1)→
(2)→(3)→(4)→
(1)→(5)→(6)
4.按7.3节所说的办法,写出下面赋值句A:
=B*(-C+D)的自下而上语法制导翻译过程。
给出所产生的三地址代码。
四元式
(1)
uminus
c
/
T1
(2)
+
T1
D
T2
(3)
*
B
T2
T3
(4)
:
=
T3
/
A
【答案】
5.按照7.3.2节所给的翻译模式,把下列赋值句翻译为三地址代码:
A[i,j]:
=B[i,j]+C[A[k,l]]+d[i+j]
【答案】
中间代码
中间代码
(1)
T1:
=i*NA2
(13)
T10:
=WA*T8
(2)
T1:
=T1+j
(14)
T11:
=T9[T10]
(3)
T2:
=A-CA
(15)
T12:
=C-Cc
(4)
T3:
=WA*T1
(16)
T13:
=Wc*T11
(5)
T4:
=i*NB2
(17)
T14:
=T12[T13]
(6)
T4:
=T4+j
(18)
T15:
=T7+T14
(7)
T5:
=B-CB
(19)
T16:
=i+j
(8)
T6:
=WB*T4
(20)
T17:
=d-Cd
(9)
T7:
=T5[T6]
(21)
T18:
=Wd*T16
(10)
T8:
=k*NA2
(22)
T19:
=T17[T18]
(11)
T8:
=T8+l
(23)
T20:
=T15+T19
(12)
T9:
=A-CA
(24)
T2[T3]:
=T20
6.按7.4.1和7.4.2节的翻译办法,分别写出布尔式Aor(Bandnot(CorD))的四元式序列。
【答案】
用作数值计算时产生的四元式:
用作条件控制时产生的四元式:
四元式
(1)
or
C
D
T1
(2)
not
T1
/
T2
(3)
and
B
T2
T3
(4)
or
A
T3
T4
四元式
四元式
(1)
(jnz,A,-,0)
(5)
(jnz,C,-,(4))
(2)
(j,-,-,(3))
(6)
(j,-,-,(7))
(3)
(jnz,B,-,(5))
(7)
(jnz,D,-,(5))
(4)
(j,-,-,0)
(8)
(j,-,-,
(1))
其中:
右图中
(1)和(8)为真出口,(4)(5)(7)为假出口。
7.用7.5.1节的办法,把下面的语句翻译成四元式序列:
WhileA ifA=1thenC: =C+1 elsewhileA≦Ddo A: =A+2; 【答案】 四元式 四元式 (1) (j<,A,C,(3)) (9) (j,-,-, (1)) (2) (j,-,-,0) (10) (j≦,A,D,(12)) (3) (j<,B,D,(5)) (11) (j,-,-, (1)) (4) (j,-,-,0) (12) (+,A,2,T2) (5) (j=,A,1,(7)) (13) (: =,T2,-,A) (6) (j,-,-,(10)) (14) (j,-,-,(10)) (7) (+,C,1,T1) (15) (j,-,-, (1)) (8) (: =,T1,-,C) 第9章运行时存储空间组织 4.下面是一个Pascal程序: programPP(input,output); VARk: integer; FUNCTIONF(n: integer): integer; begin ifn<=0thenF: =1 elseF: =n*F(n-1); end; begin K: =F(10); … end. 当第二次(递归地)进入F后,DISPLAY的内容是什么? 当时整个运行栈的内容是什么? 【答案】 第1次进入F后,运行栈的内容: 第2次进入F后,运行栈的内容: 10 4 9 0 8 n(形参) 7 1(形参个数) 6 2(全局display) 5 返回地址 4 0 3 k 2 0(display) 1 返回地址 0 0 17 11 16 0 15 n(形参) 14 1(形参个数) 13 9(全局display) 12 返回地址 11 4 10 4 9 0 8 n(形参) 7 1(形参个数) 6 2(全局display) 5 返回地址 4 0 3 k 2 0(display) 1 返回地址 0 0 第2次进入F后,Display内容为: 11 0 5.对如下的Pascal程序,画出程序执行到 (1)和 (2)点时的运行栈。 【答案】 运行到 (1)时的运行栈: (静态链)运行到 (2)时的运行栈: (静态链) 15 c 14 0(形参个数) 13 5 12 返回地址 11 5 10 p 9 k(形参) 8 1(形参个数) 7 0 6 返回地址 5 0 4 d 3 i 2 0 1 返回地址 0 0 15 c 14 0(形参个数) 13 5 12 返回地址 11 5 10 p 9 k(形参) 8 1(形参个数) 7 0 6 返回地址 5 0 4 d 3 i 2 0 1 返回地址 0 0 【答案】 运行到 (1)时的运行栈: (Display表)运行到 (2)时的运行栈: (Display表) 20 c 19 13 18 5 17 0 16 0(形参个数) 15 10(全局display) 14 返回地址 13 5 12 p 11 5 10 0 9 k(形参) 8 1(形参个数) 7 2(全局display) 6 返回地址 5 0 4 d 3 i 2 0(display) 1 返回地址 0 0 20 t 19 13 18 5 17 0 16 0(形参个数) 15 10(全局display) 14 返回地址 13 5 12 p 11 5 10 0 9 k(形参) 8 1(形参个数) 7 2(全局display) 6 返回地址 5 0 4 d 3 i 2 0(display) 1 返回地址 0 0 6.有如下示意的Pascal源程序,并已知在运行时刻,以过程为单位对程序中的变量进行动态存储分配。 当运行主程序而调用过程语句X时,试分别给出以下时刻的运行栈的内容和Display的内容。 (1)已开始而尚未执行完毕标号为10的语句; (2)已开始而尚未执行完毕标号为11的语句; 【答案】 (1)运行到标号10时,运行栈的内容: (2)运行到标号11时,运行栈的内容: 26 j 25 i 24 h 23 16 22 6 21 0 20 k 19 1(形参个数) 18 12(全局display) 17 返回地址 16 6 15 e 14 d 13 6 12 0 11 j 10 i 9 2(形参个数) 8 2(全局display) 7 返回地址 6 0 5 c 4 b 3 a 2 0(display) 1 返回地址 0 0 24 g 23 f 22 16 21 6 20 0 19 0(形参个数) 18 12(全局display) 17 返回地址 16 6 15 e 14 d 13 6 12 0 11 j 10 i 9 2(形参个数) 8 2(全局display) 7 返回地址 6 0 5 c 4 b 3 a 2 0(display) 1 返回地址 0 0 main→X(a,b)→Y main→X(a,b)→Y→Z 第10章优化 1.试把以下程序划分为基本块并作出其程序流图。 【答案】 2.试把以下程序划分为基本块并作出其程序流图。 【答案】 3.试对以下基本块B1和B2: 分别应用DAG对它们进行优化,并就以下两种情况分别写出优化后的四元式序列: (1)假设只有G,L,M在基本块后面还要被引用; (2)假设只有L在基本块后面还要被引用。 【答案】 B1基本块: (1)G,L,M可用 (2)L可用 B2基本块: (1)G,L,M可用 (2)L可用 (注: 可编辑下载,若有不当之处,请指正,谢谢! )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 编译 原理 陈火旺版 课后 作业 参考答案 ch610Word