2024年4月29日发(作者:)
课后答案网
第二章
P36-6
(1)
L(G
1
)
是0~9组成的数字串
(2)
最左推导:
NNDNDDNDDDDDDD0DDD01DD012D0127
NNDDD3D34
NNDNDDDDD5DD56D568
最右推导:
NNDN7ND7N27ND27N127D1270127
NNDN4D434
NNDN8ND8N68D68568
P36-7
G(S)
O1|3|5|7|9
N2|4|6|8|O
D0|N
SO|AO
AAD|N
P36-8
文法:
ET|ET|E
T
TF|T*F|T/F
F(E)|i
最左推导:
EETTTFTiTiT*FiF*Fii*Fii*i
ETT*FF*Fi*Fi*(E)i*(ET)i*(TT)i*(FT)
i*(iT)i*(iF)i*(ii)
最右推导:
EETET*FET*iEF*iEi*iTi*iFi*iii*i
ETF*TF*FF*(E)F*(ET)F*(EF)F*(Ei)
F*(Ti)F*(Fi)F*(ii)i*(ii)
语法树:/********************************
课后答案网
课后答案网
E
E
+T
E+TF
TFi
Fi
i
i+i+i
*****************/
P36-9
句子iiiei有两个语法树:
S
S
iSeS
iS
iiSeS
iSei
iiSei
iiSei
iiiei
iiiei
P36-10
/**************
STS|T
T(S)|( )
***************/
P36-11
/***************
L1:
SAC
AaAb|ab
CcC|
L2:
SAB
AaA|
BbBc|bc
L3:
课后答案网
E
E
E+T
E
-T
T
T*F
E-TF
F
Fi
TFi
i
i
Fi
i
i-i-ii+i*i
课后答案网
S
AB
AaAb|
BaBb|
L4:
S
A|B
A0A1|
B1B0|A
***************/
第三章习题参考答案
P64–7
(1)
1(01|)101
X
*
Y
0
1
1 0 1
X 1 2 3 4 5
1
确定化:
{X}
φ
{1,2,3}
{2,3}
{2,3,4}
{2,3,5}
{2,3,4,Y}
0
φ
φ
{2,3}
{2,3}
{2,3,5}
{2,3}
{2,3,5}
1
{1,2,3}
φ
{2,3,4}
{2,3,4}
{2,3,4}
Y
{2,3,4,Y}
{2,3,4,}
0
1 0
0 2 3
0 0 1 1 0
0 1
1
4 5
6
0
1
1 1
最小化:
课后答案网
课后答案网
{0,1,2,3,4,5},{6}
{0,1,2,3,4,5}
0
{1,3,5} {0,1,2,3,4,5}
1
{1,2,4,6}
{0,1,2,3,4},{5},{6}
{0,1,2,3,4}{1,3,5}
0
{0,1,2,3},{4},{5},{6}
{0,1,2,3}{1,3} {0,1,2,3}{1,2,4}
01
{0,1},{2,3}{4},{5},{6}
{0,1}{1} {0,1}{1,2}
01
{2,3}{3} {2,3}{4}
01
{0},{1},{2,3},{4},{5},{6}
0
1
2
0
0 0 1 0
0 1
1
3 4
5
0
1
1 1
P64–8
(1)
(1|0)
*
01
(2)
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)
*
(0|5)|(0|5)
(3)
0
*
1(0|10
*
1)
*
|1
*
0(0|10
*
1)
*
P64–12
(a)
a
a,b
0
a
确定化:
{0}
{0,1}
{1}
1
a
{0,1}
{0,1}
{0}
b
{1}
{1}
φ
课后答案网
课后答案网
φ
给状态编号:
0
1
2
3
a
1
1
0
3
b
2
2
3
3
φ φ
a
a
0 1
a b b b
b
2 3
a
最小化:
{0,1},{2,3}
{0,1}{1} {0,1}{2}
ab
{2,3}{0,3} {2,3}{3}
ab
{0,1},{2},{3}
a a
b b
1 2
0
a
b
(b)
b b a
2 3
0
a b
a
a b
b a
4 5
1
a a
已经确定化了,进行最小化
课后答案网
课后答案网
最小化:
{{0,1}, {2,3,4,5}}
{0,1}
a
{1} {0,1}
b
{2,4}
{2,3,4,5}
a
{1,3,0,5} {2,3,4,5}
b
{2,3,4,5}
{2,4}
a
{1,0} {2,4}
b
{3,5}
{3,5}
a
{3,5} {3,5}
b
{2,4}
{{0,1},{2,4},{3,5}}
{0,1}
a
{1} {0,1}
b
{2,4}
{2,4}
a
{1,0} {2,4}
b
{3,5}
{3,5}
a
{3,5} {3,5}
b
{2,4}
b b a
1 2
0
a b
a
P64–14
(1) 0
1
0
0
(2):
X
(010|)
*
1
Y
2
0
1
1
X
0
确定化:
{X,1,Y}
0
{1,Y}
Y
1
{2}
课后答案网
课后答案网
{1,Y}
{2}
φ
给状态编号:
0
1
2
3
0
1
1
1
3
1
2
2
3
3
{1,Y}
{1,Y}
φ
{2}
φ
φ
0
0 1
0
1 0
1 1
1
2 3
0
最小化:
{0,1},{2,3}
{0,1}
0
{1} {0,1}
1
{2}
{2,3}
0
{1,3} {2,3}
1
{3}
{0,1},{2},{3}
0
1 1 1
1
3
0
0
0
第四章
P81–1
(1) 按照T,S的顺序消除左递归
G
(S)
Sa|^|(T)
TST
T
,ST
|
递归子程序:
procedure S;
begin
if sym='a' or sym='^'
then abvance
else if sym='('
课后答案网
课后答案网
then begin
advance;T;
if sym=')' then advance;
else error;
end
else error
end;
procedure T;
begin
S;
T
end;
procedure
T
;
begin
if sym=','
then begin
advance;
S;
T
end
end;
其中:
sym:是输入串指针IP所指的符号
advance:是把IP调至下一个输入符号
error:是出错诊察程序
(2)
FIRST(S)={a,^,(}
FIRST(T)={a,^,(}
FIRST(
T
)={,,
}
FOLLOW(S)={),,,#}
FOLLOW(T)={)}
FOLLOW(
T
)={)}
预测分析表
S
T
a ^ ( )
,
#
S(T)
Sa
S^
TST
TST
TST
T
是LL(1)文法
T
T
,ST
P81–2
文法:
课后答案网
课后答案网
ETE
E
E|
TFT
T
T|
FPF
F
*F
|
P(E)|a|b|^
(1)
FIRST(E)={(,a,b,^}
FIRST(E')={+,ε}
FIRST(T)={(,a,b,^}
FIRST(T')={(,a,b,^,ε}
FIRST(F)={(,a,b,^}
FIRST(F')={*,ε}
FIRST(P)={(,a,b,^}
FOLLOW(E)={#,)}
FOLLOW(E')={#,)}
FOLLOW(T)={+,),#}
FOLLOW(T')={+,),#}
FOLLOW(F)={(,a,b,^,+,),#}
FOLLOW(F')={(,a,b,^,+,),#}
FOLLOW(P)={*,(,a,b,^,+,),#}
(2)
考虑下列产生式:
E
E|
T
T|
F
*F
|
P(E)|^|a|b
FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ
FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ
FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ
FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ
FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ
FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ
FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ
所以,该文法式LL(1)文法.
(3)
E
E'
T
T'
+
*
( )
a
b
^
#
ETE'
ETE'
ETE'
ETE'
E
E
E
E
TFT
TFT
TFT
TFT
T
T
T
T
T
T
T
T
T
T
T
课后答案网
课后答案网
F
F'
P
FPF
FPF
FPF
FPF
F
F
*F
F
F
F
F
F
F
P(E)
Pa
Pb
P^
(4)
procedure E;
begin
if sym='(' or sym='a' or sym='b' or sym='^'
then begin T; E' end
else error
end
procedure E';
begin
if sym='+'
then begin advance; E end
else if sym<>')' and sym<>'#' then error
end
procedure T;
begin
if sym='(' or sym='a' or sym='b' or sym='^'
then begin F; T' end
else error
end
procedure T';
begin
if sym='(' or sym='a' or sym='b' or sym='^'
then T
else if sym='*' then error
end
procedure F;
begin
if sym='(' or sym='a' or sym='b' or sym='^'
then begin P; F' end
else error
end
procedure F';
begin
if sym='*'
then begin advance; F' end
end
procedure P;
begin
if sym='a' or sym='b' or sym='^'
then advance
else if sym='(' then
课后答案网
课后答案网
end;
begin
advance; E;
if sym=')' then advance
else error
end
else error
P81–3
/***************
(1) 是,满足三个条件。
(2) 不是,对于A不满足条件3。
(3) 不是,A、B均不满足条件3。
(4) 是,满足三个条件。
***************/
第五章
P133–1
EETET*F
短语: E+T*F, T*F,
直接短语: T*F
句柄: T*F
P133–2
文法:
Sa|^|(T)
TT,S|S
(1)
最左推导:
S(T)(T,S)(S,S)(a,S)(a,(T))(a,(T,S))(a,(S,S))(a,(a,S))(a,(a,a))
S(T,S)(S,S)((T),S)((T,S),S)((T,S,S),S)((S,S,S),S)(((T),S,S),S)
(((T,S),S,S)),S)(((S,S),S,S),S)(((a,S),S,S),S)(((a,a),S,S),S)
(((a,a),^,S),S)(((a,a),^,(T)),S)(((a,a),^,(S)),S)(((a,a),^,(a)),S)
(((a,a),^,(a)),a)
最右推导:
S(T)(T,S)(T,(T))(T,(T,S))(T,(T,a))(T,(S,a))(T,(a,a))
(S,(a,a))(a,(a,a))
S(T,S)(T,a)(S,a)((T),a)((T,S),a)((T,(T)),a)((T,(S)),a)
((T,(a)),a)((T,S,(a)),a)((T,^,(a)),a)((S,^,(a)),a)(((T),^,(a)),a)
(((T,S),^,(a)),a)(((T,a),^,(a)),a)(((S,a),^,(a)),a)(((a,a),^,(a)),a)
(2)
(((a,a),^,(a)),a)
课后答案网
课后答案网
(((S,a),^,(a)),a)
(((T,a),^,(a)),a)
(((T,S),^,(a)),a)
(((T),^,(a)),a)
((S,^,(a)),a)
((T,^,(a)),a)
((T,S,(a)),a)
((T,(a)),a)
((T,(S)),a)
((T,(T)),a)
((T,S),a)
((T),a)
(S,a)
(T,S)
(T)
S
“移进-归约”过程:
步骤 栈 输入串 动作
0 # (((a,a),^,(a)),a)# 预备
1 #( ((a,a),^,(a)),a)# 进
2 #(( (a,a),^,(a)),a)# 进
3 #((( a,a),^,(a)),a)# 进
4 #(((a ,a),^,(a)),a)# 进
5 #(((S ,a),^,(a)),a)# 归
6 #(((T ,a),^,(a)),a)# 归
7 #(((T, a),^,(a)),a)# 进
8 #(((T,a ),^,(a)),a)# 进
9 #(((T,S ),^,(a)),a)# 归
10 #(((T ),^,(a)),a)# 归
11 #(((T) ,^,(a)),a)# 进
12 #((S ,^,(a)),a)# 归
13 #((T ,^,(a)),a)# 归
14 #((T, ^,(a)),a)# 进
15 #((T,^ ,(a)),a)# 进
16 #((T,S ,(a)),a)# 归
17 #((T ,(a)),a)# 归
18 #((T, (a)),a)# 进
19 #((T,( a)),a)# 进
20 #((T,(a )),a)# 进
21 #((T,(S )),a)# 归
22 #((T,(T )),a)# 归
23 #((T,(T) ),a)# 进
24 #((T,S ),a)# 归
25 #((T ),a)# 归
课后答案网
课后答案网
26
27
28
29
30
31
32
33
34
#((T)
#(S
#(T
#(T,
#(T,a
#(T,S
#(T
#(T)
#S
,a)#
,a)#
,a)#
a)#
)#
)#
)# 归
#
# 归
进
归
归
进
进
归
进
P133–3
(1)
FIRSTVT(S)={a,^,(}
FIRSTVT(T)={,,a,^,(}
LASTVT(S)={a,^,)}
LASTVT(T)={,,a,^,)}
(2)
a
^
(
)
,
a
<
<
^
<
<
(
<
<
)
>
>
=
>
>
,
>
>
<
>
>
G
6
是算符文法,并且是算符优先文法
(3)优先函数
f
g
f
f
f
a^
a
4
5
^
4
5
(
2
5
)
4
2
,
4
3
f
f
)(,
g
a
g
g
g
g
^
(),
输入字符串
(a,(a,a))#
a, (a,a))#
, (a,a))#
, (a,a))#
动作
预备
进
进
归
(4)
栈
#
#(
#(a
#(t
课后答案网
课后答案网
#(t,
#(t,(
#(t,(a
#(t,(t
#(t,(t,
#(t,(t,a
#(t,(t,s
#(t,(t
#(t,(t)
#(t,s
#(t
#(t )
# s
success
(a,a))#
a,a))#
,a))#
,a))#
a))#
))#
))#
))#
)#
)#
)#
#
#
进
进
进
归
归
进
进
归
进
归
归
归
进
P134–5
(1)
0.
S
S
1.
S
S
2.
SAS
3.
SAS
4.
SAS
5.
Sb
6.
Sb
7.
ASA
8.
ASA
9.
ASA
10.
Aa
11.
Aa
(2)
1
S A
8
7
9
S
a
10
0
A S
2 3
d
5
确定化:
{0,2,5,7,10}
{1,2,5,7,8,10
S
{1,2,5,7,8,10
}
{2,5,7,8,10}
A
{2,3,5,7,10}
{2,3,5,7,9,10
11
4
6
a
{11}
{11}
b
{6}
{6}
课后答案网
课后答案网
}
{2,3,5,7,10}
{2,5,7,8,10}
{2,3,5,7,9,10
}
{2,4,5,7,8,10
}
{11}
{6}
{2,4,5,7,8,10
}
{2,5,7,8,10}
{2,4,5,7,8,10
}
{2,5,7,8,10}
φ
φ
}
{2,3,5,7,10}
{2,3,5,7,9,10
}
{2,3,5,7,10}
{2,3,5,7,9,10
}
φ
φ
{11}
{11}
{11}
{11}
φ
φ
{6}
{6}
{6}
{6}
φ
φ
A S
5:
ASA
6:
ASA
3:
S
S
S
AS
SAS
S A a
SAS
ASA
Sb
ASA
ASA
Sb
b
Aa
ASA
Aa
Aa
SAS
Sb
S a A S b S A b
a A
4:
SAS
7:
SAS
0:
S
S
SAS
SAS
ASA
A S
SAS
Sb
Sb
ASA
ASA
Sb
b
ASA
Aa
Aa
Aa
a a b b a
1:
Aa
2:
Sb
DFA
构造LR(0)项目集规范族也可以用GO函数来计算得到。所得到的项目集规范族与上图中的
项目集一样:
I
0
={
S
S
,
SAS
,
Sb
,
ASA
,
Aa
}
GO(
I
0
,a)={
Aa
}=
I
1
GO(
I
0
,b)={
Sb
}=
I
2
GO(
I
0
,S)={
S
S
,
ASA
,
ASA
,
Aa
,
SAS
,
Sb
}=
I
3
课后答案网
课后答案网
GO(
I
0
,A)={
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
4
GO(
I
3
,a)={
Aa
}=
I
1
GO(
I
3
,b)={
Sb
}=
I
2
GO(
I
3
,S)={
ASA
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
5
GO(
I
3
,A)={
ASA
,
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
6
GO(
I
4
,a)={
Aa
}=
I
1
GO(
I
4
,b)={
Sb
}=
I
2
GO(
I
4
,S)={
SAS
,
ASA
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
7
GO(
I
4
,A)={
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
4
GO(
I
5
,a)={
Aa
}=
I
1
GO(
I
5
,b)={
Sb
}=
I
2
GO(
I
5
,S)={
ASA
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
5
GO(
I
5
,A)={
ASA
,
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
6
GO(
I
6
,a)={
Aa
}=
I
1
GO(
I
6
,b)={
Sb
}=
I
2
GO(
I
6
,S)={
SAS
,
ASA
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
7
GO(
I
6
,A)={
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
4
GO(
I
7
,a)={
Aa
}=
I
1
GO(
I
7
,b)={
Sb
}=
I
2
GO(
I
7
,S)={
ASA
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
5
GO(
I
7
,A)={
ASA
,
SAS
,
SAS
,
Sb
,
ASA
,
Aa
}=
I
6
项目集规范族为C={
I
1
,
I
2
,
I
3
,
I
4
,
I
5
,
I
6
,
I
7
}
(3)不是SLR文法
状态3,6,7有移进归约冲突
状态3:FOLLOW(S’)={#}不包含a,b
状态6:FOLLOW(S)={#,a,b}包含a,b,;移进归约冲突无法消解
状态7:FOLLOW(A)={a,b}包含a,b;移进归约冲突消解
所以不是SLR文法。
(4) 构造例如LR(1)项目集规范族
见下图:
对于状态5,因为包含项目[
AAS a/b
],所以遇到搜索符号a或b时,应该用
AAS
归约。又因为状态5包含项目[
Aa a/b
],所以遇到搜索符号a时,应该移进。因此
存在“移进-归约”矛盾,所以这个文法不是LR(1)文法。
课后答案网
课后答案网
b b b
1:
5: 8:
S
S #
ASA a/b
S
AS a/b
A
ASA a/b
SAS a/b
SAS a/b
A A
ASA a/b
SAS a/b
Sb a/b
Aa a/b
Sb
a/b
ASA a/b
SAS
a/b
ASA a/b
Aa a/b
S
Sb a/b
A
a a/b
a
a
S
S a S
3:
0: 3:
a a A a
Aa a/b
A
S
S #
SAS #/a/b
9:
6:
Sb #/a/b
SAS a/b
ASA a/b
S
ASA a/b
ASA a/b
ASA a/b
b
4:
ASA a/b
Aa a/b
Sb #/a/b
Aa a/b
Aa a/b
SAS a/b
S
SAS a/b
Sb a/b
A b
Sb a/b
a a S b b
2: 7:
SAS #/a/b
SAS #/a/b
ASA a/b
SAS #/a/b
ASA a/b
Sb #/a/b
10:
S b
Aa a/b
Sb a/b
ASA a/b
SAS a/b
Aa a/b
Sb a/b
A
A
5:
课后答案网
课后答案网
第六章
/********************第六章会有点难
P164–5
(1)
E
E1+T {if ( = int) and ( = int )
then := int
else := real}
E
T { := }
T
{ := real}
T
num { := int}
(2)
P164–7
S
L1|L2 {:=+(/2
)}
S
L {:=}
L
L1B {:=2* + ;
:=+1}
L
B {:=B.c;
:=1}
B
0 {B.c:=0}
B
1 {B.c:=1}
***********************/
第七章
P217–1
a*(-b+c)
a+b*(c+d/e)
-a+b*(-c+d)
ab@c+*
abcde/+*+
a@bc@d+*+
A(CD)
ACD
ABC@D
ABCD@E
(AB)(CD)
(AB)(CDE)
if (x+y)*z =0 then (a+b)↑c else a↑b↑c xy+z*0= ab+c↑abc↑↑ ¥
或 xy+z*0= P1 jez ab+c↑ P2 jump abc↑↑
P1 P2
课后答案网
课后答案网
P217–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
(2) @, (1), -
(3) +, c, d
(4) *, (2), (3)
(5) +, (1), c
(6) -, (4), (5)
间接码表:
(1)
(2)
(3)
(4)
(1)
(5)
(6)
四元式序列:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
+, a, b,
T
1
@,
T
1
, -,
T
2
+, c, d,
T
3
*,
T
2
,
T
3
,
T
4
+, a, b,
T
5
+,
T
5
, c,
T
6
-,
T
4
,
T
6
,
T
7
P218–4
自下而上分析过程中把赋值句翻译成四元式的步骤:A:=B*(-C+D)
步骤 输入串 栈 PLACE 四元式
(1) A:=B*(-C+D)
(2) :=B*(-C+D) i A
(3) B*(-C+D) i:= A-
(4) *(-C+D) i:=i A-B
(5) *(-C+D) i:=E A-B
课后答案网
课后答案网
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
*(-C+D) i:=E
(-C+D) i:=E*
-C+D) i:=E*(
C+D) i:=E*(-
+D) i:=E*(-i
+D)
+D)
D)
)
i:=E*(-E
i:=E*(E
i:=E*(E+
A-B
A-B-
A-B--
A-B---
A-B---C
A-B---C
A-B--
T
A-B--
T
-
1
1
(@,C,-,
T
)
1
i:=E*(E+i A-B--
T
-D
1
) i:=E*(E+E A-B--
T
-D (+,
T
,D,
T
)
11
2
) i:=E(E A-B--
T
i:=E*(E)
i:=E+E
i:=E
A-B--
T
-
A-B-
T
A-
T
3
(20)
A
2
2
2
(*,B,
T
,
T
)
3
2
(:=,
T
,-,A)
3
产生的四元式:
(@,C,-,
T
)
(+,
T
,D,
T
)
1
2
(*,B,
T
,
T
)
(:=,
T
,-,A)
3
2
3
1
P218–5
/****************
设A :10*20,B、C、D:20,宽度为w=4 则
T1:= i * 20
T1:=T1+j
T2:=A–84
T3:=4*T1
Tn:=T2[T3] //这一步是多余的
T4:= i + j
T5:=B–4
T6:=4*T4
T7:=T5[T6]
T8:= i * 20
T8:=T8+j
T9:=A–84
T10:=4*T8
T11:=T9[T10]
T12:= i + j
T13:=D–4
T14:=4*T12
T15:= T13[T14]
T16:=T11+T15
T17:=C–4
课后答案网
课后答案网
T18:=4*T16
T19:=T17[T18]
T20:=T7+T19
Tn:=T20
******************/
P218–6
100. (jnz, A, -, 0)
101. (j, -, -, 102)
102. (jnz, B, -, 104)
103. (j, -, -, 0)
104. (jnz, C, -, 103)
105. (j, -, -, 106)
106. (jnz, D, -, 104) --假链链首
107. (j, -, -, 100) --真链链首
假链:{106,104,103}
真链:{107,100}
P218–7
100. (j<, A, C, 102)
101. (j, -, -, 0)
102. (j<, B, D, 104)
103. (j, -, -, 101)
104. (j=, A, ‘1’, 106)
105. (j, -, -, 109)
106. (+, C, ‘1’, T1)
107. (:=, T1, -, C)
108. (j, -, -, 100)
109. (j≤, A, D, 111)
110. (j, -, -, 100)
111. (+, A, ‘2’, T2)
112. (:=, T2, -, A)
113. (j, -, -, 109)
114. (j, -, - 100)
P219–12
/********************
(1)
MAXINT – 5
MAXINT – 4
MAXINT – 3
MAXINT – 2
MAXINT – 1
MAXINT
课后答案网
课后答案网
(2)翻译模式
方法1:
for E1 := E2 to E3 do S
SF do MS
1
FFor I:E
1
to E
2
Iid
M
SF do MS
1
{backpatch(st,nextquad);
backpatch(st,);
emit( ‘:=’ ‘+’1);
emit(‘j
,’ ‘,’ ‘,’);
st := ist;
}
{ist:= makelist(nextquad);
FFor I:E
1
to E
2
Iid
****************/
方法2:
S→ for id:=E1 to E2 do S1
S→ F S1
F→ for id:=E1 to E2 do
Fforid:E1toE2
do
M
emit(‘j>,’ ‘,’ ‘,0’);
emit( ‘:=’);
st := makelist(nextquad);
emit(‘j,-,-,-’);
:= ;
:= ;
}
{p:=lookup();
if p <> nil then
:= p
else error}
{ := nextquad}
{
INITIAL=NEWTEMP;
emit(‘:=,’’, -,’ INITIAL);
FINAL=NEWTEMP;
emit(‘:=,’’, -,’ FINAL);
p:= nextquad+2;
emit(‘j,’ INITIAL ‘,’ FINAL ’,’ p);
st:=makelist(nextquad);
课后答案网
课后答案网
emit(‘j,-,-,-’);
:=lookup();
if il then
emit( ‘:=’ INITIAL)
:=nextquad;
:=FINAL;
}
SFS1
{
backpatch(st, nextquad)
p:=nextquad+2;
emit(‘j,’ ‘,’ ’,’ p );
st := merge(st, makelist(nextquad));
emit(‘j,-,-,-’);
emit(‘succ,’ ’, -,’ );
emit(‘j,-,-,’ );
}
第九章
P270–9
(1) 传名
即当过程调用时,其作用相当于把被调用段的过程体抄到调用出现处,但必须将其中出现的
任一形式参数都代之以相应的实在参数。
A:=2;
B:=3;
A:=A+1;
A:=A+(A+B);
print A;
∴A=9
(2) 传地址
即当程序控制转入被调用段后,被调用段首先把实在参数抄进相应的形式参数的形式单元
中,过程体对形参的任何引用或赋值都被处理成对形式单元的间接访问。当被调用段工作完
毕返回时,形式单元(都是指示器)所指的实参单元就持有所希望的值。
①A:=2;B:=3;T:=A+B
②把T,A,A的地址抄进已知单元J1,J2,J3
③x:=J1;y:=J2;z:=J3 //把实参地址抄进形式单元,且J2=J3
④Y↑:=y↑+1
Z↑:=z↑+x↑ // Y↑:对y的间接访问
Z↑:对z的间接访问
⑤print A
A=8
(3) 得结果
每个形参均对应两个单元,第一个存放实参地址,第二个存放实参值,在过程体中对形参的
课后答案网
课后答案网
任何引用或赋值都看成是对它的第二个单元的直接访问,但在过程工作完毕返回前必须把第
二个单元的内容放到第一个单元所指的那个实参单元中
①A:=2;B:=3;T:=A+B
②把T,A,A的地址抄进已知单元J1,J2,J3
③x1:=J1;x2:=T;
y1:=J2;y2:=A;
z1:=J3;z2:=A; //将实参的地址和值分别放进两个形式单元中
④y2:=y2+1; z2:=z2+x2; //对形参第二个单元的直接访问
⑤x1↑:=x2; y1↑:=y2; z1↑:=z2 //返回前把第二个单元的内容存放到第一个单元所
指的实参地址中
⑥print A
A=7
(4) 传值
即被调用段开始工作时,首先把实参的值写进相应的形参单元中,然后就好像使用局部变量
一样使用这些形式单元
A:=2;
B:=3;
x:=A+B
y:=A
z:=A
y:=y+1
z:=z+x
print A
A=2
过程调用不改变A的值
第十章
P306-1
课后答案网
课后答案网
P306-2
read A,B
F:=1
C:=A*A
B
1
D:=B*B
if C L 1 --------------------------- E:=A*A F:=F+1 E:=E+F B 2 write E halt --------------------------- L 1 : E:=B*B F:=F+2 E:=E+F B 3 write E if E>100 goto L 2 课后答案网 B BB BB 课后答案网 --------------------------- halt B 4 --------------------------- L 2 : F:=F-1 goto L 1 B 5 --------------------------- 基本块为 B 1 、 B 2 、 B 3 、 B 4 、 B 5 P307-4 I:=1 read J,K A:=K*I B:=J*I T:=K*100 L: C:=A*B write C A:=A+K B:=B+J if A halt B2有回路,所以{B2}是循环,B2既是入口节点,又是出口节点 (1) 代码外提:不存在不变运算,故无代码外提 (2) 强度削弱:A:=K*I B:=J*I *→+ (3) 删除基本归纳变量:I<100 可以用A<100*K或B<100*J代替 课后答案网 课后答案网 P307-5 A:=0 I:=1 B:=J+1 C:=B+I T:=B+100 L1’: A:=C+A if C=T goto L2 C:=C+1 goto L1’ L2’: {B2,B3}是循环,B2是入口节点,也是出口节点 (1) 代码外提:B:=J+1 (2) 删除归纳变量 课后答案网
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714370208a2433796.html
评论列表(0条)