编译原理_第三版_课后答案

编译原理_第三版_课后答案


2024年4月29日发(作者:)

编译原理

_

第三版

_

课后答案

编译原理课后题答案

第二章

P36-6

(1)

0~9

组成的数字串

最左推导

N= ND= NDD= NDDD = DDDD = ODDD = O1DD= 012D= 0127

N=

ND

DD

3D

34

N=

ND

NDD = DDD = 5DD = 56D

568

最右推导

N

ND

N7

ND7

N27

ND27

N127

D127

N =

ND = N4= D4= 34

N= ND

N8= ND8

N68

D68

568

P36-7

G(S)

0127

编译原理第三版课后答案

O > 1|3|5|7|9

N > 2|4|6|8|0

D

0|N

S > 0|A0

A > AD|N

P36-8

文法:

E T T E +T|E —T

T t F T* F|T/ F

F > (E)|i

最左推导

E = E

T=

T

T=

F T = i T = i T * F = i F * F = i i * F = i i*i

E = T= T* F

F * F = i* F

i *( E)

i*( E T)

i *( T T)

=i *( i T)

i*(i F)= i*( i i)

最右推导

:

E= E

T=

E T*F= E T*i= E F*i= E i*i= T i*i= F i*i= i i*i

E= T= F*T= F * F= F*( E)= F *( E T)= F *( E F)= F *( E i)

=F*( T i)= F*( F i)= F*( i i)= i*(i i)

/********************************

i *( F T)

编译原理第三版课后答案

i

i+i+i

*****************

P36-9

句子

iiiei

有两个语法树:

S

iSeS

iSei

iiSei = iiiei

S= iS = iiSeS = iiSei = iiiei

P36-10

/**************

S > TS |T

T > (S)|()

***************

P36-11

i

i+i*i

i-i-

i

编译原理第三版课后答案

***************

P36-11

编译原理第三版课后答案

L1:

S > AC

Ar aAb | ab

C r cC |

L2:

S > AB

A

aA| ;

B r bBc|bc

L3:

S > AB

A—:

aAb |

B = aBb |

L4:

S > A| B

A—;

0A1| ;

B-

1B0| A

***************/

P64

-

7

(1)

第三章习题参考答案

编译原理第三版课后答案

1(01)

*

101

(1)

编译原理第三版课后答案

1101

确定化:

0

{X}

0

{1,2,3}

{2,3}

{2,3,4}

{2,3,5}

1

{1,2,3}

0

0

{2,3}

{2,3}

{2,3,5}

{2,3}

{2,3,5}

0

{2,3,4}

{2,3,4}

{2,3,4}

{2,3,4,Y}

{2,3,4,}

{2,3,4,Y}

10

01

0

1

编译原理第三版课后答案

11

最小化:

{0,1,2,3,4,5},{6}

{0,123,4,5}

={135} {0,1,2,3,4,5}^{1,2,4,6}

{0,1,2,3,4},{ 5},{6}

{0,123,4}

={1,3,5}

{0,1,23,{4},{ 5},{6}

{0,1,23

°

={1,3} {0,1,2,3}

{1,2,4}

{0,1},{2,

0

}{4},{ $,{6

{0,1}

0

<1} {0,1}

{1,2}

{2,3}

{3 {23

{4}

{0},{1},{2,3},{ 4},{ 5},{ 6}

0010

01

0

1

P64

-

8

(1)

编译原理第三版课后答案

11

P64

-

(1)

8

编译原理第三版课后答案

(1 |0)

*

01

(2)

⑴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,b

a

确定化:

a

{0}

{0,1}

{1}

: {0}

{0,1}

{0,1}

b

{1}

{1}

0

0

0

0

编译原理第三版课后答案

给状态编号:

编译原理第三版课后答案

0

1

2

3

abbb

最小化:

{0,1},{ 2,3}

{0,1}

a

={1} {0,1}

b

{2}

{2,3}

a

{0,3 {2,3}

b

{3}

{0,1},{ 2},{ 3}

aa

a b

1 2

1 2

0 3

3 3

编译原理第三版课后答案

bb

a

b

(b)

bba

ab

a

ab

ba

aa

已经确定化了

进行最小化

最小化:

编译原理第三版课后答案

{{0,1}, {2,3,4,5}}

{0,1}

a

={1} {0,1}

b

={2,4}

{2,3,4,5}

b

{2,3,4,5} {2,3,4,5}

a

{1,3,0,5

{2,4}

a

{1,0

{3,5L

{3,5

{2,4}

厂{

3,5

{3,5}

厂{

2,4}

{{0,1},{2,4},{ 3,5}}

{0,1}

a

{1}

{2,4

人二

{1,0

{3,5L

{3,5}

bba

ab a

P64

-

14

(1)0

1

=> :

0

⑵:

{0,1}

b

{2,4}

{2,4}

{3,5

{3,5}

{2,4}

--------------

・ A

编译原理第三版课后答案

(010)

*

确定化:

0

{X,1,Y}

{1,Y}

{2}

r

{1,Y}

{1,Y}

{1,Y}

1

{2}

{2}

0

0

0

0

给状态编号:

0

0

1

2

3

1

2

2

3

3

1

1

1

3

0

编译原理第三版课后答案

10

11

1

0

最小化:

,{2,3

={1} {0,1}^ {2}

={1,3} {2,3h

{3}

,{2},{3}

0

111

0

0

P81

1

{0,1}

{0,1}

{2,3}

{0,1}

第四章

编译原理

_

第三版

_

课后答案

(1)

按照

T,S

的顺序消除左递归

G (S)

S > af

|仃)

T > ST

T

>,ST | ;

递归子程序:

procedure S;

beg in

if sym='a' or sym=''

A

the n abva nee

else if sym='('

the n begi n

advance;T;

if sym=')' the n adva nee;

else error;

end

else error

编译原理

_

第三版

_

课后答案

end;

procedure T;

编译原理

_

第三版

_

课后答案

beg in

S;

end;

procedure ;

beg in

if sym

','

then begi n

advanee;

S;

end

end;

其中

sym:

是输入串指针

IP

所指的符号

advanee:

是把

IP

调至下一个输入符号

error:

是出错诊察程序

编译原理

_

第三版

_

课后答案

FIRST(S)

{a,

,(}

FIRST(T)

{a,

,(}

FIRST()={,,}

FOLLOW(S)={),,,#}

FOLLOW(T)={)}

FOLLOW()={)}

预测分析表

a

S

T

A ( )

J

#

S

T

a

:T

T ST

S

T A

r

S

T

(T)

T

T

ST'

T J s TJ ,ST

LL(1)

文法

P81

-

2

文法:

E >TE

E

E p

T > FT

T J T |

F > PF

F "―; *F | ;

P > (E)| a |b |

A

编译原理

_

第三版

_

课后答案

(1)

FIRST(E)

{(,a,b"}

FIRST(E')

{+,

£

}

FIRST(T)={(,a,b,}

A

FIRST(T')={(,a,b,,

A

&

}

FIRST(F)={(,a,b,}

A

FIRST(F')={*,

£

}

FIRST(P)={(,a,b,}

A

FOLLOW(E)

{#,)}

FOLLOW(E')

{#,)}

FOLLOW(T)

{+,),#}

FOLLOW(T')

{+,),#}

FOLLOW(F)={(,a,b,"+,),#}

FOLLOW(F')

{(,a,b,"+,),#}

FOLLOW(P)

{*,(,a,b,"+,),#}

编译原理

_

第三版

_

课后答案

考虑下列产生式

E >

E| ;

T > T| ;

F J *F | ;

P > (E)||a|b

A

FIRST(+E)Q FIRST( £ )={+} A{

£

}= ©

FIRST(+E) A FOLLOW(E')

{+}Q {#,)}= ©

FIRST(T) A FIRST(

£

)={(,a,b,A} A{

£

}= ©

FIRST(T) A FOLLOW(T')={(,a,b,A} A {+,),#}= ©

FIRST(*F') A FIRST(

£

)={*} A{

£

}= ©

FIRST(*F') A FOLLOW(F')

{*} A {(,a,b,A,+,),#}= ©

FIRST((E)) A FIRST(a) A FIRST(b) A FIRST(A)= ©

所以

,

该文法式

LL(1)

文法

.

(3)

+

*

( )

a b A

#

E

E

T

TE'

E

T

TE'

E

T

TE'

E

T

TE '

E'

T

E

E

E J

EJ s

T

T

T J T

T

T

F

T

T

FT*

T J

T

T

FT

T

T

T

T'

T J E

F

F

T

PF'

F J

E

T

T T

F J

T

T

T

F

T

PF'

F

T

PF'

F

T

PF'

F J g F J 8 F J E

T

T S

F J 8

F'

F J

E

F

编译原理

_

第三版

_

课后答案

P

P

T

(E)

P

T

a

P

T

b

P

T A

procedure E;

beg in

if sym='(' or sym='a' or sym='b' or sym=''

A

then begi n T; E' end

else error

end

procedure E:

beg in

if sym='+'

then begi n adva nee; E end

else if sym<>')' and sym<>'#' the n error

end

procedure T;

beg in

编译原理

_

第三版

_

课后答案

if sym='(' or sym='a' or sym='b' or sym='A'

then begi n F; T' end

else error

end

procedure T:

beg in

if sym='(' or sym='a' or sym='b' or sym='

else if sym='*' the n error

end

procedure F;

beg in

if sym='(' or sym='a' or sym='b' or sym='A'

then begi n P; F' end

else error

end

procedure F:

beg in

A

' the n T

编译原理

_

第三版

_

课后答案

if sym

'*'

then begi n adva nee; F' end

end

procedure P;

beg in

if sym='a' or sym='b' or sym=''

A

then adva nee

else if sym='(' the n

beg in

advanee; E;

if sym=')' the n adva nee

else error

end

else error

end;

编译原理

_

第三版

_

课后答案

P81

3

***************

(1)

是,满足三个条件。

不是,对于

A

不满足条件

3

不是,

A

B

均不满足条件

3

是,满足三个条件。

***************/

第五章

P133- 1

E =

E T= E T* F

短语

:E+T*F, T*F,

直接短语

:T*F

句柄

:T*F

P133-2

文法:

(1)

编译原理

_

第三版

_

课后答案

最左推导

(T)

(T,S)= (S,S)

(a,S)

(a,(T))

(a,(T,S))= (a,(S,S))

(a,(a,S))

(a,(a,a)) S

S

(T,S)

(S,S)

((T),S)

((T,S),S)

((T,S,S),S)

((S,S,S),S)

(((T),S,S),S)

A

=(((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)

AAA

=(((a,a)f ,(a)), a)

最右推导

S

(T)

二(「

S)

二(「(

T))

(T,(T,S))

(T,(T,a))

(T,(S,a))

(T,(a,a))

-■ (S,(a,a))

(a,(a,a))

S

(T,S)

二(「

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)

A

((S,,(a)),a)

A

((T,,(a)),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)#

(a,a),

2 #((

,(a)),a)#

a,a),

3 #(((

,(a)),a)#

4 #(((a ,a),

A

,(a)),a)#

预备

课后答案

编译原理

_

第三版

_

5 #(((S

,a),

,(a)),a)#

6 #(((T

,a),

,(a)),a)#

7 #(((T, a),,(a)),a)#

A

8 #(((T,a

9 #(((T,S

10 #(((T

11 #(((T)

12 #((S

13 #((T

14 #((T,

15 #((T,

A

16 #((T,S

17 #((T

18 #((T,

19 #((T,(

20 #((T,(a

),

A

,(a)),a)#

),A,(a)),a)#

),A,(a)),a)#

,A,(a)),a)#

,A,(a)),a)#

,A,(a)),a)#

A,(a)),a)#

,(a)),a)#

,(a)),a)#

,(a)),a)#

(a)),a)#

a)),a)#

)),a)#

编译原理

_

第三版

_

,课后答

21

#((T,(S )),a)#

22

#((T,(T )),a)#

23

#((T,(T) ),a)#

24

25

26

27

28

29

30

31

32

33

34

P133-3

(1)

#((T,S

#((T

#((T)

#(S

#(T

#(T,

#(T,a

#(T,S

#(T

#(T)

#S

),a)#

),a)#

,a)#

,a)#

,a)#

a)#

)#

)#

)#

#

#

编译原理

_

第三版

_

课后答案

FIRSTVT(S)

{a,

,(}

FIRSTVT(T)={,,a,

,(}

LASTVT(S)={a,,)}

A

LASTVT(T)={,,a,")}

a

A

( )

5

a

>

>

<

>

>

<

>

>

A

(

)

<

< =

>

<

5

< < >

是算符文法,并且是算符优先文法

(3)

优先函数

a

f 4

5

A

4

5

(

2

5

)

5

4

2

4

3

g

(4)

栈输入字符串动作

(4)

编译原理第三版课后答案

#

(

a,(a,a)

)

#

预备

#(a, (a,a))#

#(a, (a,a))#

#(t, (a,a))#

#

(

t,(a,a)

)

#

(

t,

(

a,a

) )

#

(

t,

(

a,a

) )

#

(

t,

(

t,a

))

#

(

t,

(

t,a

) )

#

(

t,

(

t,a

) )

#

(

t,

(

t,s

) )

#

(

t,

(

t

) )

#

(

t,

(

t

) )

#

(

t,s

)

#

#

(

t

)

#

#

#

#

#

#

#

#

#

#

编译原理第三版课后答案

#

(

t

)

#

编译原理第三版课后答案

# S#

success

P134—5

(1)

0.

4.

5.

8. 9. 10.

SA

AS

1. 2. 3.

6.

7.

11.

编译原理第三版课后答案

确定化:

S

{0,2,5,7,10}

{1,2,5,7,8,10

}

{1,2,5,7,8,10

}

{2,3,5,7,10}

{2,4,5,7,8,10

}

{2,5,7,8,10} {2,5,7,8,10}

{2,5,7,8,10}

A

{2,3,5,7,10}

a

{11}

b

{6}

{2,3,5,7,9,10

}

{2,3,5,7,10}

{11} {6}

{11} {6}

{2,3,5,7,9,10

}

{11} {6}

{2,3,5,7,9,10

}

{2,4,5,7,8,10

}

{11}

{2,4,5,7,8,10

}

{2,5,7,8,10}

{2,3,5,7,10} {11} {6}

{2,3,5,7,9,10

}

{11} {6}

0

0

0

{6}

0

0

0

0

0

AS

编译原理第三版课后答案

Sa AS bSAb

aA

7:

S

AS |

— SA

S t A 'S

S

T

4:

AS

S

T

b

A

T

SA

S

AS

b

A t a

A—

SA

1

A

a

aabb

DFA

构造

LR(O)

项目集规范族也可以用

GO

函数来计算得到。所得到

目集规范族与上图中的项目集一样

={

,,,,

GO

a)={

=

GO

b)={ }=

GO

S

)={

,,,,,

=

GO

A)={

,,,,

=

GO

,

a)={ }=

的项

编译原理第三版课后答案

GO

,

b)={ }=

GO

S)={

, ,,,

=

}

GO

A)={

, ,,,,

=

}

GO

a){ }

==

GO

,

b)={ }=

GO

S)={

, ,,,,

=

}

}

GO

,

A)={

, ,,,

=

GO

a){ }

==

GO

,

b)={ }=

GO

S)={

, ,,,

=

}

GO

,

)={

, ,,,,

=

A}

GO

,

a){ }

==

GO

,

b)={ }=

GO

,

S)={

, , , , ,

=

}

}

GO

,

A)={

, , , ,

=

GO

,

a){ }

==

GO

,

b)={ }=

GO

,

S)={

, , , ,

=

}

编译原理第三版课后答案

GO

,

)={

, , , , ,

=

A}

项目集规范族为

C={

,,,,,,

}

不是

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

,因为包含项目

[]

,所以遇到搜索符号

a

b

时,应

该用归约。又因为状态

5

包含项目

[]

,所以遇到搜索符号

a

时,应该

移进。因此存在“移进

-

归约”矛盾,所以这个文法不是

LR(1)

文法。

编译原理第三版课后答案

bbb

1:

5:

8:

S J S #

A

T

SA

S T

A S

a/b

a/b

a/b

a/b

a/b

a/b

S

T

S

T

AS

AS

a/b

A

A

T

S

A

A

T

SA

A

T

a

S

T

AS

S

T

b

a/b

a/b

a/b

S T

AS

S T b

AA

a/b

a/b

a/b

A

T

SA

A

T

a

S

T

b

A

T

SA

A

T

a

a/b

a/b

a/b

aS

3:

SaS

o:

S

aaAa

S >

AS

S >

b

A

A >

SA

a

A >

3:

#

#/a/b

#/a/b

a/b

a/b

A

T

a a/b

6:

9:

A

T

S

A

A

T

SA

A

T

a

S

T

AS

S

T

b

S

T

a/b

a/b

a/b

a/b

a/b

AS

a/b

A

T

S

A

A

T

SA

a/b

a/b

a/b

a/b

a/b

A

T

a

S

T

AS

S

T

b

编译原理第三版课后答案

Ab

aaSbb

2:

S T A S #/a/b

S T

AS #/a/b

S T

b #/a/b

b

A

T

SA a/b

A

T

a a/b

7:

S

AS #/a/b

A

T

S

A a/b

A、

SA a/b

A—;

a

a/b

S

AS a/b S

b

a/b

10:

S

b a/b

5:

编译原理第三版课后答案

/********************

第六章

第六章会有点难

P164-5

(1)

EE1+ T {if ( = int) and

(「

type = int )

the n := int

else := real}

ET { := }

{ := real}

Tnum { := int}

P164-7

SL1|L2 {:=+(/2)}

SL {:=}

LL1B {:=2* + ;

ngth:

ngth+1}

编译原理第三版课后答案

LB {:=B.c;

ngth :=1}

BO {B.c:=0}

B1 {B.c:=1}

***********************/

P217— 1

a*(-b+c)

a+b*(c+d/e)abcde/+*+

-a+b*(-c+d) —A —(C —D)

(A B) (—C D)

(A B) (C P E)

xy+z*0= P1 jez ab+c f

if (x+y)*z =0 then (a+b)

ab+cf abcff ¥

P2 jump abc ff

第七章

A_CD_ _

AB C @ D

AB CD @ E

f c else a f b fc xy+z*0=

编译原理

_

第三版

_

课后答案

P1 P2

P217-3

-(a+b)*(c+d)-(a+b+c)

三元式序列

(1) +, a, b

⑵ @, (1),-

(3) +, c, d

(4) *, (2), (3)

(5) +, a, b

(6) +, (5), c

(7) -, (4), (6)

间接三元式序列

三兀式表:

(1)+, a, b

(2) @, (1),-

编译原理

_

第三版

_

课后答案

(3) +, c, d

⑷*, (2), (3)

(5) +, (1), c

(6) -, (4), (5)

间接码表:

(1)

(2)

(3)

(4)

(1)

(5)

(6)

四元式序列

(1) +, a, b,

⑵ @,,-,

⑶ +, c, d,

⑷ *,,,

(5) +, a, b,

编译原理

_

第三版

_

课后答案

(6) +, , c,

⑺-,,,

P218-4

自下而上分析过程中把赋值句翻译成四元式的步

:A:

B*(-C+D)

步骤输入串 栈

PLACE

四元式

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

⑵ :=B*(-C+D) iA

⑶ B*(-C+D) i:=A-

⑷ *(-C+D) i:=i A-B

(5) *(-C+D) i:=E A-B

(6) *(-C+D) i:=E A-B

⑺ (-C+D) i:=E* A-B-

(8) -C+D) i:=E*( A-B-

(9) C+D) i:=E*(-

A-B-

(10)

+D)i:=E*(-i A-B---C

(11) +D)i:=E*(-E A-B---C

(12) +D)i:=E*(E A-B--

(@,C,-,)

编译原理第三版课后答案

(13) D)i:=E*(E+ A-B---

(14) )i:= E*(E+i A-B---D

(15) ) i:=E*(E+E

(16) ) i:=E(E

(17)i:=E*(E) A-B---

(18)i:=E+E

A-B-

(

(19)i:=E

-

A

(20)

(,,

产生的四元式:

(@,c,-,)

(+,Q,)

(*,B,,)

,,-,

(:=A)

P218-5

/****************

A

:

10*20

,

B

C D: 20

,宽度为

T1:= i * 20

T1:=T1+j

T2:=A

84

T3:=4*T1

A-B---D (+,,D,)

A-B--

*,B,,)

-,A)

A

w= 4

Tn :=T2[T3]

II

这一步是多余的

编译原理第三版课后答案

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,

, 106)

105. (j, -, -, 109)

106.

(+, C,

, T1)

107. (:=,T1, -, C)

108. (j, -, -, 100)

109.

(j

<

, A, D, 111)

110. (j, -, -, 100)

111.

(+, A,

, 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

S r F do MS

1

F = For I : = E

j

to E

2

I > id

M

{backpatch(S1. nextlist ,n extquad);

backpatch(st,);

编译原理

_

第三版

_

课后答案

emit(

:=

'

+

'

1);

emit(

j,

'

,

'

,

'

);

S.n extlist := ist;

}

{ist:

makelist (n extquad);

emit(

j>,

'

emit(

:=

'

);

st := makelist( nextquad);

emit(

j,-,-,-

'

);

:= ;

F.e nd := ;

}

{p:=looku);

if p <> nil the n

:= p

,

'

,);

‘‘

编译原理

_

第三版

_

课后答案

else error}

{ := n extquad}

编译原理第三版课后答案

****************/

方法

2

:

S

for id:=E1 to E2 do S1

S

F S1

F

for id:=E1 to E2 do

do

{

INITIAL

NEWTEMP;

emit(

:二

,'

-

, '

INITIAL);

FINAL

NEWTEMP;

emit(

:二

,'

-

, '

FINAL);

p:= n extquad+2;

巳血

t( i , IMTIAL ; 1'INAL j?);

??T

?

F.n extlist:

makelist( nextquad);

emit(

j,

———'

,,);

:=looku);

编译原理

_

第三版

_

课后答案

if 1

1

place nil then

emit(

:二

'

INITIAL)

:

n extquad;

nal:=FINAL;

}

S > FS1

{

backpatch(S1. nextlist, n extquad)

p:=n extquad+2;

emit. ( J

,

'

nal

'

,

merge(st, makelist(nextquad));

emit(

j,

,

,

—'

);

emit(

succ

,‘

' ,

emit(

j,

,

,

'

);

p ); st :=

-

,‘

);

'

编译原理

_

第三版

_

课后答案

第九章

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

Yf :=y f +1

Zf :=z f +xf // Y f:

y

的间接访问

Zf:

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 f:= x2; y1 f

:二

y2; z1 f :=z2 //

返回前把第二个单元的内

容存放到第一个单元所

指的实参地址中

print A

A=7

⑷传值

即被调用段开始工作时,首先把实参的值写进相应的形参单元中,

然后就好像使用局部变量一样使用这些形式单元

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

D:=B*B

if C

Bi

Bi

B

3

B

4

编译原理第三版课后答案

E:=A*A

F:=F+1 E:=E+F write E halt

:E:=B*B

F:=F+2

E:=E+F

write E

if E>100 goto

halt

F:=F-1

编译原理第三版课后答案

goto

基本块为、、、、

P307-4

B2

有回路,所以

{B2}

是循环,

B2

既是

xx

节点,又是出口节点

代码外提:不存在不变运算,故无代码外提

强度削弱:

A:=K*I B:=J*I *

—+

(1)

(2)

编译原理第三版课后答案

(3

)删除基本归纳变量:

1<100

可以用

A<100*K

B<100*J

代替

编译原理第三版课后答案

P307-5


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714370116a2433778.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信