编译原理作业解析——第五章语法制导翻译技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十四次作业 P195 12、13、14(2)
P195 14. 将下列while语句翻译成四元式序列: (2) while a<c∧b<d do if a=1 then c :=c+1 else while a<=d do a :=a+2 107(:=,T1,-,C) 108(J,-,-.100) 四元式序列: 109(J=,A,D,111) 100(J<,A,C,102); 110(J,-,-,100) 101(J,-,-,0) 111(+,A,’2’,T2) 102(J<,B,D,104) 112(:=,T2,-,A) 103(J,-,-,101) 113(J,-,-,109) 104(J=,A,’1’.106) 114(J,-,-,100) 105(J,-,-,109) 115 106(+,C,’1’,T1) S· CHAIN=103
, 0/102) , 0)
, 0/104) , 0/101)
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10
语法制导翻译过程
(4)
四元式
E∧E∧’c>d {BP(E(1)•TC=102, NXQ=104); E∧’•FC:= E(1)•FC=103} (5) E∧E∧’E 104 (j>, c, d, 0) {E•TC:=104; E•FC:=105} 105 (j, , , 0/103) (6) E∧E(1) { E(1)•TC:= E•TC =104; E(1)•FC:= MERG(E∧’•FC=103, E•FC=105)=105} (7) E(2) { E(2) •TC= E(1)•TC =104; E(2) •FC:= MERG(E∧•FC=101, E•FC=105)=105}
预祝
大
家 考
出
好ຫໍສະໝຸດ Baidu
成
绩
!
S3 r4 , E∷=i S4 SUB4
4
0264
02643 02647 026 0269 01
--a--a---a-b -- a+b - - a+b – - a+b
#(E+
b)#
S3
5
#(E+b
)#
r4 , E∷=i
SUB4
6
#(E+E
)#
r1 , E∷=E+E
SUB1
7
8 9
#(E
#(E) #E
编译原理作业解析—— 第五章语法制导翻译技术
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10 2. 给出下面表达式的后缀式表示: (3) a+b*(c+d/e) : 解答: abcde/+*+ (4) (a∧b)∨(┐c∨d) : 解答: ab∧c┐d∨∨ (5) –a+b*(-c+d) : 解答: a-bc-d+*+ (6) (a∨b) ∧(c∨┐d∧e) : 解答: ab∨cd ┐e∧∨∧
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10 4. 将下列中缀式改写为后缀式表示: (2) ((a*d+c)*d+e)*f+g : 解答: ad*c+d*e+f*g+ (4) x-5∨x 5 : 解答: x5- x5 ∨
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10 5. 将下列后缀式改写为中缀式表示: (1) abc-*cd+e/- : 解答: a*(b-c)-(c+d)/e (3) abc+a0>∧ab+0<>a0<∧∨ : 解答: (a b+c∧a>0) ∨(a+b<>0∧a<0)
)#
# #
S9
r1 , E∷=(E) acc SUB3
10. 将下列布尔表达式翻译成四元式序列,并给出语法制导翻译 过程(作为条件控制): 第十三次作业(6月8日布置) a∧b∧c>d
解答:
P195
四元式序列如下所示: (1) (jnz, a, , 3) a的四元式,当a为真时,则转向第3个四元式 (2) (j, , , 0) (3) (jnz, b, , 5) b的四元式,当b为真时,则转向第3个四元式 (4) ( j, , , 2) 无条件转向第2个四元式 (5) (j>, c, d, 0) c>d的四元式 (6) (j, , , 4) 无条件转向第4个四元式 <BE>•TC表示<BE>真出口的链首 <BE>•FC表示<BE>假出口的链首 每个链尾的四元式第4分量均为0,表示结束标记
第十四次作业 P195 12、13、14(2)
12. 写出下列条件赋值语句的四元式序列: z := if a>c then x+y else x+y-0.5
解答: 根据语义子程序,其条件赋值语句四元式序列为:
100 (j>, a, c, 102) 101 (j, , , 105) 102 (+, x, y, T1) 103 (:=,T1, , z) 104 (j, , , 108) 105 (+, x, y, T2) 106 ( -, T2, 0.5, T3) 107 (:=,T3, -, z) 108
100 (+, y, 1, T1) 101 (j=, x, T1, 103) 102 (j, , , 106) 103 (*, x, y, T2) 104 (:=,T2, , x) 105 (j, , , 113) 107 (j, , , 113) 108 (-, x, 1, T3) 109 (:=,T3, , x) 110 (+, y, 2, T4) 111 (:=,T4, , y) 112 (j, , , 113) 113
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10
解答: 语法制导翻译过程 四元式 a∧b∧c>d (1) E∧b∧c>d 100 (jnz, a, {E•TC:=100; E•FC:=101} 101 ( j , , (2) E∧b∧c>d {BP(E(1)•TC=100, NXQ=102); E∧•FC:= E(1)•FC=101} (3) E∧E∧c>d 102 (jnz, b, {E•TC:=102; E•FC:=103} 103 ( j , ,
第十四次作业 P195 12、13、14(2) 13. 将下列条件语句翻译成四元式序列: if x=y+1 then x := x*y else while x<>0 do begin x :=x-1; y :=y+2 end
解:根据语义子程序,其条件赋值语句四元式 序列为: 106 (j<>, x, 0, 108)
第十三次作业 P194 1、2、4(2)(4) 5(3) 8 10
按下列格式写出分析符号串5*6过程
6.
解 答:
调用子程序 步骤 状态栈 语义值栈 — 符号栈 输入串 (a+b)# 归约规则及动作
0
0
#
S2
1 2 3
02 023 026
—— ——— ——a
#( #(a #(E
a+b)# +b)# +b)#