第二章
P36-6 (1)
L(G1)是
0~9组成的数字串
(2)
最左推导:
NNDNDDNDDDDDDD0DDD01DD012D0127NNDDD3D34NNDNDDDDD5DD56D568
最右推导:
NNDN7ND7N27ND27N127D1270127NNDN4D434NNDN8ND8N68D68568
P36-7 G(S)
O1|3|5|7|9N2|4|6|8|OD0|NSO|AOAAD|N
P36-8 文法:
ET|ET|ETTF|T*F|T/F F(E)|i最左推导:
EETTTFTiTiT*FiF*Fii*Fii*iETT*FF*Fi*Fi*(E)i*(ET)i*(TT)i*(FT)i*(iT)i*(iF)i*(ii)
__________________________________________________
__________________________________________________
最右推导:
EETET*FET*iEF*iEi*iTi*iFi*iii*iETF*TF*FF*(E)F*(ET)F*(EF)F*(Ei)F*(Ti)F*(Fi)F*(ii)i*(ii)
语法树:/********************************
EETEEE+E+TE-TE+TFTT*F-TFTFiFFiTFiFiiiFiii+i+ii-i-iii+i*i
*****************/ P36-9
句子iiiei有两个语法树:
SiSeSiSeiiiSeiiiieiSiSiiSeSiiSeiiiiei
P36-10
/**************
STS|T
T(S)|( )***************/
P36-11
/*************** L1:
__________________________________________________
__________________________________________________
SACAaAb|ab CcC|L2:
SABAaA|BbBc|bcL3:
SABAaAb| BaBb|L4:
SA|BA0A1| B1B0|A***************/
第三章习题参
P–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} __________________________________________________
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} {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}{1,3,5} {0,1,2,3,4,5}{1,2,4,6}01{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}0{3} {2,3}1{4}{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
P–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)*
P–12
(a)
a
__________________________________________________
__________________________________________________
a,b 0 a
确定化:
{0} {0,1} {1} φ
给状态编号: 0 1 2 3 1 a {0,1} {0,1} {0} φ b {1} {1} φ φ 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
P–14
(1) 0 1 0 0 (2):
X (010|)*
1 Y 2 __________________________________________________ __________________________________________________
0 1 1 X
0
确定化: {X,1,Y} {1,Y} {2} φ 给状态编号: 0 1 2 3 0 1 1 1 3 0 {1,Y} {1,Y} {1,Y} φ Y 1 {2} {2} φ φ 1 2 2 3 3 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) TSTT,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 a ^ ( ) , # Sa S^ S(T) __________________________________________________
__________________________________________________
T TST TST TST T 是LL(1)文法
T T,ST P81–2
文法:
ETEEE|TFTTT|FPFF*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)
考虑下列产生式:
EE|TT|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' F F' P + * ( ETE' ) a b ^ ETE' ETE' ETE' # EE E E TFT FPF TFT TFT TFT FPF FPF FPF T TT T TT TT TT T 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 begin
advance; E;
if sym=')' then advance else error end
else error end;
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 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #((T, (a)),a)# #((T,( a)),a)# #((T,(a )),a)# #((T,(S )),a)# #((T,(T )),a)# #((T,(T) ),a)# #((T,S ),a)# #((T ),a)# #((T) ,a)# #(S ,a)# 归 #(T ,a)# 归 #(T, a)# 进 #(T,a )# 进 #(T,S )# 归 #(T )# 归 #(T) # 进 #S # 归
进 进 进 归 归 进 归 归 进
P133–3
(1)
FIRSTVT(S)={a,^,(} FIRSTVT(T)={,,a,^,(} LASTVT(S)={a,^,)} LASTVT(T)={,,a,^,)} (2) a ^ ( ) , a < < ^ < < ( < < ) > > = > > , > > < > > G6是算符文法,并且是算符优先文法
(3)优先函数 f g
fa f^ f
(
__________________________________________________ a 4 5 ^ 4 5 ( 2 5 ) 4 2 , 4 3 f f
),__________________________________________________
ga (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
g g g g ^(),
输入字符串 (a,(a,a))# a, (a,a))# , (a,a))# , (a,a))# (a,a))# a,a))# ,a))# ,a))# a))# ))# ))# ))# )# )# )# # #
动作 预备 进 进 归 进 进 进 归 进 进 归 归 进 归 归 进 归
P134–5
(1)
0.SS 1.SS 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 3 2
d 5 6 11 4 __________________________________________________ __________________________________________________
确定化:
{0,2,5,7,10} {1,2,5,7,8,10} {2,3,5,7,10} {2,5,7,8,10} {2,3,5,7,9,10} {2,4,5,7,8,10} {11} {6} S {1,2,5,7,8,10} {2,5,7,8,10} {2,4,5,7,8,10} {2,5,7,8,10} {2,4,5,7,8,10} {2,5,7,8,10} φ φ A {2,3,5,7,10} {2,3,5,7,9,10} {2,3,5,7,10} {2,3,5,7,9,10} {2,3,5,7,10} {2,3,5,7,9,10} φ φ a {11} {11} {11} {11} {11} {11} φ φ b {6} {6} {6} {6} {6} {6} φ φ
A S
5:ASA 6:ASA 3:SS SAS SAS S A a ASA SAS Sb
ASA ASA Sb b Aa Aa ASA
SASAa
Sb
S a A S b S A b a A
4:SAS 7:SAS 0:SS
SAS SAS ASA A S SAS Sb Sb
ASA ASA Sb b Aa Aa ASA Aa
a a b b a
1:Aa 2:Sb
__________________________________________________
__________________________________________________
DFA
构造LR(0)项目集规范族也可以用GO函数来计算得到。所得到的项目集规范族与上图中的项目集一样:
I0={SS,SAS,Sb,ASA,Aa} GO(I0,a)={ Aa}=I1 GO(I0,b)={ Sb}=I2
GO(I0,S)={ SS,ASA,ASA,Aa,SAS,Sb}=I3 GO(I0,A)={ SAS,SAS,Sb,ASA,Aa}=I4 GO(I3,a)={ Aa}=I1 GO(I3,b)={ Sb}=I2
GO(I3,S)={ ASA,SAS,Sb,ASA,Aa}=I5
GO(I3,A)={ ASA,SAS,SAS,Sb,ASA,Aa}=I6 GO(I4,a)={ Aa}=I1 GO(I4,b)={ Sb}=I2
GO(I4,S)={ SAS,ASA,SAS,Sb,ASA,Aa}=I7 GO(I4,A)={ SAS,SAS,Sb,ASA,Aa}=I4 GO(I5,a)={ Aa}=I1 GO(I5,b)={ Sb}=I2
GO(I5,S)={ ASA,SAS,Sb,ASA,Aa}=I5
GO(I5,A)={ ASA,SAS,SAS,Sb,ASA,Aa}=I6 GO(I6,a)={ Aa}=I1 GO(I6,b)={ Sb}=I2
GO(I6,S)={ SAS,ASA,SAS,Sb,ASA,Aa}=I7 GO(I6,A)={ SAS,SAS,Sb,ASA,Aa}=I4 GO(I7,a)={ Aa}=I1 GO(I7,b)={ Sb}=I2
GO(I7,S)={ ASA,SAS,Sb,ASA,Aa}=I5
GO(I7,A)={ ASA,SAS,SAS,Sb,ASA,Aa}=I6
项目集规范族为C={I1,I2,I3,I4,I5,I6,I7}
(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: SS #ASA a/bSAS a/b A ASA a/bSAS a/bSAS a/b A A ASA a/bSAS a/bSb a/b Aa a/bSb a/bASA a/b SAS a/bASA a/bAa a/b S Sb a/bAa a/b a a S S a S 3: 0: 3: a a A a Aa a/b A SS # SAS #/a/b9: 6: Sb #/a/b SAS a/bASA a/b S ASA a/bASA a/bASA a/b b 4: ASA a/b Aa a/bSb #/a/bAa a/b Aa a/b SAS a/b S SAS a/bSb a/b A b Sb a/b a a S b b 2: 7: SAS #/a/bSAS #/a/b ASA a/bSAS #/a/b ASA a/bSb #/a/b10: S b Aa a/bSb a/b ASA a/b SAS a/bAa a/b Sb a/b A A 5: __________________________________________________
__________________________________________________
第六章
/********************第六章会有点难
P1–5
(1)
EE1+T {if (E1.type = int) and (T.type = int ) then E.type := int else E.type := real} ET {E.type := T.type} Tnum.num {T.type := real} Tnum {T.type := int} (2)
P1–7
SL1|L2
{S.val:=L1.val+(L2.val/2L2.length)}
SL {S.val:=L.val}
LL1B {L.val:=2*L1.val + B.val; L.length:=L1.length+1} LB {L.val:=B.c;
L.length :=1} B0 {B.c:=0} B1 {B.c:=1} ***********************/
第七章
P217–1
a*(-b+c) a+b*(c+d/e) -a+b*(-c+d)
abcde/+*+
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, T1 @, T1, -, T2 +, c, d, T3 *, T2, T3, T4 +, a, b, T5 +, T5, c, T6 -, T4, T6, T7
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-
11(@,C,-, T)
1 i:=E*(E+i A-B--T-D
1) i:=E*(E+E A-B--T-D (+,T,D,T)
112) 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
222(*,B,T,T)
23(:=,T,-,A)
3产生的四元式: (@,C,-, T) (+,T,D,T)
12(*,B,T,T) (:=,T,-,A)
3231P218–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 MS1FFor I:E1 to E2IidMSF do MS1
{backpatch(S1.nextlist,nextquad);
backpatch(F.truelist,M.quad);
emit(F.place ‘:=’F.place ‘+’1);
emit(‘j,’F.place ‘,’F.end ‘,’M.quad); S.nextlist := F.falselist; }
{F.falselist:= makelist(nextquad);
FFor I:E1 to E2
Iid
****************/ 方法2:
S→ for id:=E1 to E2 do S1 S→ F S1
F→ for id:=E1 to E2 do Fforid:E1toE2do
M
emit(‘j>,’E1.place ‘,’E2.place ‘,0’); emit(I.Place ‘:=’E1.place); F.truelist := makelist(nextquad); emit(‘j,-,-,-’); F.place := I.place; F.end := E2.place; }
{p:=lookup(id.name); if p <> nil then I.place := p else error}
{M.quad := nextquad}
{
INITIAL=NEWTEMP; emit(‘:=,’E1.PLACE’, -,’ INITIAL); FINAL=NEWTEMP; emit(‘:=,’E2.PLACE’, -,’ FINAL); p:= nextquad+2;
emit(‘j,’ INITIAL ‘,’ FINAL ’,’ p); F.nextlist:=makelist(nextquad);
__________________________________________________
__________________________________________________
emit(‘j,-,-,-’);
F.place:=lookup(id.name); if F.placenil then
emit(F.place ‘:=’ INITIAL) F.quad:=nextquad; F.final:=FINAL; }
SFS1 {
backpatch(S1.nextlist, nextquad) p:=nextquad+2;
emit(‘j,’ F.place‘,’ F.final ’,’ p );
S.nextlist := merge(F.nextlist, makelist(nextquad)); emit(‘j,-,-,-’); emit(‘succ,’ F.place ’, -,’ F.place); emit(‘j,-,-,’ F.quad); }
第九章
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 B1 D:=B*B if C --------------------------- BBBBBL1: E:=B*B F:=F+2 E:=E+F B3 write E if E>100 goto L2 __________________________________________________ __________________________________________________ --------------------------- halt B4 --------------------------- L2: F:=F-1 goto L1 B5 --------------------------- 基本块为B1、B2、B3、B4、B5 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 (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) 删除归纳变量 __________________________________________________ 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务