.
(2) 写出每个产生式对应的语义动作。 答:(1). 适合语法制导翻译的文法(3分) G(S): R? do
U?R S(1) While S?U E (2). (6分) R? do
{ R.QUAD:=NXQ } U?R S(1) While { U.QUAD:=R.QUAD;
BACKPATCH(S.CHAIN, NXQ) } S?U E
{ BACKPATCH(E.TC, U.QUAD); S.CHAIN:=E.FC }
答案二:
(1) S ? do M1 S(1) While M2 E
M ?ε (3分) (2)
M ?ε { M.QUAD := NXQ } (6分) S ? do M1 S While M2 E {
BACKPATCH(S(1).CHAIN, M2.QUAD);
(1)
.
.
BACKPATCH(E.TC, M1.QUAD);
S.CHAIN:=E. FC
}
七、(8分)将语句
if (A
100 (j<, A, X, 102) 101 (j, -, -, 109) 102 (j>, B, 0, 104) 103 (j, -, -, 109) 104 (j>, C, 0, 106) 105 (j, -, -, 109) 106 (+, C, D, T1) 107 (:=, T1, -, C) 108 (j, -, -, 104) 109
(控制结构3分,其他5分)
八、(10分) 设有基本块如下:
T1:=S+R T2:= 3
.
.
T3:= 12/T2 T4:=S/R A:=T1-T4 T5:=S+R B:=T5 T6:=T5*T3 B:=T6
(1)画出DAG图;
(2)设A,B是出基本块后的活跃变量,请给出优化后的四元式序列。
答:(1) DAG如右图:(6分)
n7 A _ n8 T6,B * n6 / n2 R n4 T2 3 n5 T3 4 T4 n3 T1,T5, B + n1 S
(2) 四元式序列:(4分) T1:=S+R
.
.
T4:=S/R A:=T1-T4 B:=T1*4
九、(9分) 设已构造出文法G(S):
(1)S ? BB (2)B ? aB (3)B? b 的LR分析表如下
状态 0 1 2 3 4 5 6 7 8 9 a s3 s6 s3 r3 s6 r2 ACTION b s4 s7 s4 r3 s7 r2 # acc r1 r3 r2 S 1 GOTO B 2 5 8 9
假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。 答: 步骤 0
状态 0
符号 #
输入串 abab#
.
相关推荐: