编译原理第6章习题与答案

  • 格式:doc
  • 大小:43.50 KB
  • 文档页数:4

真诚为您提供优质参考资料,若有不当之处,请指正。

1 / 4 第6章 习题

6-1 将下列中缀式改写为逆波兰式。

(1) -A*(B+C)/(D-E)

(2) ((a*d+c)/d+e)*f+g

(3) a+x≤4∨(c>d*3)

(4) a∨b∧c

6-2 将下列逆波兰式改写为中缀式。

(1) abc*+

(2) abc-*cd+e/-

(3) abc+≤a0>∧ab+0≠a0<∧∨

6-3 将下列语句翻译成四元式序列。

(1) X:=A*(B+C)+D

(2) if A∧(B∨(C∨D)) then S1 else S2

(3) while A0 do

if A=1 then C:=C+1 else A:=A+2

6-4 设有二维PASCAL数组A[1··10, 1··20]和三维PASCAL数组B[1··10,

1··20, 1··30],给出赋值语句

A[I,J]:=B[J,I+J,I+1]+X

的四元式序列。

第5章 习题答案

6-1 解:

(1) A-BC+*DE-/ 真诚为您提供优质参考资料,若有不当之处,请指正。

2 / 4 (2) ad*c+d/e+f*g+

(3) ax+4≤cd3*>∨

(4) abcde*f/<∧∨

6-2 解:

(1) a+b*c

(2) a*(b-c)-(c+d)/e

(3) a≤b+c∧a>0∨a+b≠0∧a<0

6-3 解:

(1) (1) (+,B,C,T1)

(2) (*,A,T1 ,T2)

(3) (+,T2 ,D,T3)

(4) (=,T3 ,0,X)

(2) 如下所示:

(1) (jnz,A,0,3);

(2) (j,0,0,p+1);

(3) (jnz,B,0,9);

(4) (j,0,0,5);

(5) (jnz,C,0,9);

(6) (j,0,0,7);

(7) (jnz,D,0,9);

(8) (j,0,0,p+1);

(9) 与S1相应的四元式序列

(p) (j,0,0,q)

(p+1) 与S2相应的四元式序列

(q) …

(3) 假设所产生的四元式序列编号从1开始

(1) (j

3 / 4 (2) (j,0,0,13)

(3) (j>,B,0,5)

(4) (j,0,0,13)

(5) (j=,A,1,7)

(6) (j,0,0,10)

(7) (+,C,1,T1)

(8) (=,T1 , ,C)

(9) (j,0,0,1)

(10) (+,A,2,T2)

(11) (=,T2 , ,A)

(12) (j,0,0,1)

(13) …

6-4 解:

(1) (*,I,20,T1)

(2) (+,J,T1,T1)

(3) (-,aA,CA ,T2)

(4) (+,I,J,T3)

(5) (*,J,20,T4)

(6) (+,T3 ,T4 ,T4)

(7) (+,I,1,T5)

(8) (*,T4,30,T6)

(9) (+,T5 ,T6 ,T6)

(10) (-,aB,CB ,T7)

(11) (=[],T7[T6],0,T8)

(12) (+,T8 ,X,T9)

(13) ([]=,T9 ,0,T2[T1])

(注:(1)~(3)是计算下标变量A[I,J]XXX的四元式,T2中存放的是CONSTPART部分,而T1中存放的是VARPART部分,aA表示数组A的首XXX; 真诚为您提供优质参考资料,若有不当之处,请指正。

4 / 4 (4)~(10) 是计算下标变量B[J,I+J,I+1]XXX的四元式,T7中存放的是CONSTPART部分,而T6中存放的是VARPART部分,aB表示数组B的首XXX。)