1.把下面的语句翻译成四元式序列,其中A是一个10*20的数组,并设w=4。
while x<10 do
if x<B then x:=A[i,j];
解:
100(j<,x,10,E1.t) ←102
101(j,_,_,E1.f) ←111(或不填)
102(j<,x,B,E2.t) ←104
103(j,_,_,E2.f) ←100
104(*,i,20,T1)
105(+,T1,j,T1)
106(-,A,84,T2)
107(*,4,T1,T3)
108(=[ ],T2,T3,T4)
109(:=,x,_,T4)
110(j,_,_100)
2.写出算术表达式A+B*(C-D)+E/(C-D)**N 的三元式、四元式序列。
解:
四元式: 三元式:
(-,C,D,T1) (1)(-,C,D)
(*,B,T1,T2) (2)(*,B,(1))
(+,A,T2,T3) (3)(+,A,(2))
(-,C,D,T4) (4)(-,C,D)
(**, T4,N,T5) (5)(**,(4),N)
(/,E, T5,T6) (6)(/,E,(5))
(+, T3,T6,T7) (7)(+,(3),(6))