Вы находитесь на странице: 1из 247

:


:
:
: ()
:

Compilers:
Principles, Techniques, and Tools

2 :

:



:
:
30:
10:

3 :

:
:

4 :

1-1


pretty printer

5 :

2-1
-1
-2 .

6 :

3-1
:



Load-and-go

7 :

4-1

8 :

5-1

9 :

1-5-1

10 :

2-5-1

11 :

6-1
( )

( )

12 :

7-1
( )

( )

-1
-2
-3
-4
-5
-6

13 :

1-7-1



14 :

2-7-1 -

(
)

15 :

2-7-1 -

16 :

2-7-1 -

17 :

2-7-1 -

18 :

2-7-1 -

( )

19 :

2-7-1 -

20 :

2-7-1 -

21 :

Area:= Pos + Rate * 50


Area:= Pos + Rate * 50


id1:= id2+ id3 *
50

tem1:=into real 50
tem2:=id3 * tem1
tem3:= id2 + tem2
Id1:= tem3


id1

:=

:=
+

id2

tem1:= id3 * 50.0


Id1:= id2 + tem1

id3

22 :

id1
*

id2

Into real
id3
50

Mov id, R2
Mul 50.0 , R2
Mov R1, id1

Mov id2 , R1
Add R2, R1

50

8-1

23 :

:
:
:

24 :

1-2

25 :

2-2
4 }G = {N, T, S, P
= N
= T
= S
= P

26 :


} N = { E, F
} T = { +, * , / ,id
S=E
} P = { E F * id , F F / E , F F + F

id * id+ id

27 :

3-2

.
:

28 :


id + id * id

E E + E E + E * E E + E * id E + id * id id + id * id


E E + E id + E id + E * E id + id * E id + id * id

29 :

1-3-2



- S
A = A XYZ XYZ
A = A Xa X ,a
( ) .

30 :

2-3-2
( )

id + id * id
E
id

id

E
id

31 :

4-2

id + id * id

E E + E id + E id + E * E id + id * E id + id * id


E E + E id + E id + E * E id + id * id

32 :

5-2
E
-1 E .

-2 E E1 op E2 Op
F1 F2 Op F1, F2 E1 , E2.
-3 E ) (E1 E1 E .

952+ -

)9-(5+2

33 :

6-2
.


34 :

1-6-2

.1

.2
.

35 :

7-2
:
(
) n x x.a a x
.
) x.a n a
n .

36 :


expr.t := expr1.t // term.t // ,+,

expr1 + term

expr

expr.t := expr1.t // term.t // ,,


expr.t := term.t

expr1 - term

expr

term

expr

term.t := , 0,
term.t := , 1,

0
1

term
term

..
term.t := , 9,

..
9

term

37 :

1-7 -2
expr.t = 95-2+
expr.t = 95-

term.t = 2

expr.t = 9

term.t = 5

term.t = 9

38 :

2-7-2



.

39 :

8-2

.

40 :

1-8-2
expr

expr1
} ) {print ( ,+,

term

-1
-2

41 :

9-2 ( )

* .

* .
* .

42 :

1-9-2 -
:

. )LL(1
:


0
LR

43 :

1-1-9-2

44 :


S bBe
B cf/ ce/c

:
Back tracking

B
c

Back tracking

b B
e

b B

bb B

c
f

45 :

2-1-9-2

46 :


First
A aB /cC / e
B dA / c
C cB / a
} First (A):{ a, c, e

} First (B): { d, c
} First (C) : {c, a

47 :

10-2

A xZ / yZ
Z aZ / bZ / cZ

A Aa / Ab / Ac / x / y

48 :


S Aa / b
A Ac / Sd
A Ac / Aad / bd
S Aa / b
S Aa / b
A bdZ
Z cZ / adZ

49 :

11-2


A aZ

A aB / aC

ZB/C

50 :


S iEtSZ /a

S iEtS
S iEtSeS / a
Eb

Z eS
Eb

S iEtS / iEtSes
S a
Eb

51 :

12-2
-

52 :

Count
Count==count
count++increment
increment

id
id==id
id++id
id

53 :

1-12-2


( )

-1
-2

54 :

13-2
.

( )..

55 :

1-13-2 -
Lookup ( s ) :

Insert ( s , t) :

s t s

.
Lookup
Insert

56 :

2-13-2 -
: attributes : token

: ptr

mod

div

div
mod
id

57 :

14-2
:

-1
-2

-1

-2
-3

58 :

1-14-2

...
.

59 :


*13 + 5

-1 1
-2 2
-3

-4 4
-5 5
-6

-7 20

60 :

2-14-2

Push s

rvalue l

lvalue l

pop

r-value l-value

=:
copy

61 :


day := (1461*y) div 4 + (153*m + 2 ) div 5 + d
lvalue day

push 2

push 1461

rvalue y

push 5

div

push 4
div

push 153

rvalue m

rvalue d
+
:=

62 :

3-14-2

-1
-2
-3

63 :

1-3-14-2 -

lable l

goto l

gofalse l
gotrue l

halt

64 :

:
:



Lex

65 :

1-3
-1

-2
-3
-4
-5

66 :

2-3


( )

67 :

1-2-3
-1
-2

-3

68 :

3-3

Panic Mode -1

-2
-3
-4
-5

69 :

1-3-3 Panic mode -




70 :

4-3

Lex

I/O


71 :

5-3

-1 {( } ) .
{a} -2 ( a ) .

-3 a b Kelin Star .

72 :


} ={a,b :
-1 aUb } {a , b .
-2 ) (aUb) (aUb } { aa, ab,ba,bb .
-3 * a a .

-4 * ) (aUb b a .

73 :

1-5-3

/ .

aUb=bUa

a U ( b U c)=(a U b U c

)(a b) c = a (b c

a (b U c) = a b U a c
( b U c) a = b a U c a

) a* = (a U
*a** = a

74 :



Letter A \ B \ \ Z\ a \b\ \ z
Digit
Id

0 \ 1 \ \ 9
letter ( letter / digit ) *

0 \ 1\ \ 9
Digits digit digit *
Optional_fraction . Digits \
Optional_exponent ( E( + \ -\ )digits) \
Num digits optional_fraction_exponent
Digit

75 :

6-3

-1
-2
-3

76 :

7-3

Aa

a
B A

A
A aB

77 :

G: S abSA
A Aa

G: S aSb/ab

G: S bS/cS/aB

B aB/cS /bC
C aB / bS

78 :

8-3 Lex -
Lex
-1
Lex

Lex.yy.c

-2
C
-3

a.out

-4 :

Yacc

a.out

Lex.1:

Lex.yy.c

79 :

- Lex 1-8-3

Lex


c

%%

Lex


%%

80 :

8-3


(
)

81 :

- Lex 1-8-3
%%

P1
P2

} : {1
} : {2
} : { 3
.
.
.

82 :

9-3

-1

DFA


-2 NFA

83 :

1-9-3
5

)M= (Q , , , q0, F

84 :

2-9-3
DFA
.
q4
a
q7

a
q3

q3

q4

a
q1

NFA

DFA

85 :

DFA
b

a
a

S aS / aA
A bA / b

][S , aabb] [S , abb

S aS

aa

][A,bb

aaA

aab

][A , b

aabA

aabb

] [Z,

aabb

86 :

NFA
:

( a U b)* abb

b
3

b
2

a
1

87 :

3-9-3 NFA DFA


: )- closure (qi :
-1qi -closure (qi) :
-2 : qj ) -closure(qj ) qk (gj , qk -
) closure (qj.
-3 qj : ) -closure (qi .

88 :


b
q1

a
a

q0

a
c

}{ q1 , q2

q2

} q0 { q1 , q2, q0

}{q1

q1

}{q1

q2

89 :

DFA NFA
a

NFA

q0
a

q0

q1 , q2, q0

b,c

q1

a
q2
c

a
a

q0

q1 , q2, q0

b,c

b
q1 , q2

a , b, c

a,c
b

90 :

q1

DFA

4-9-3 NFA
=

M1

M2

q0

)L (M2) U L (M1

91 :


a (aUb ) = b

a
1

q0

q0

q0
b
2

92 :

4-9-3 NFA
=

M2

M1

q0

) L ( m1 ) , L ( M2 )L(M1) L (M2

93 :


a , b ab

q0

q0

q0

94 :

4-9-3 NFA
kelin star -

M1

q0

L (M1) kelin star * )L (M1

95 :


a *a

q0

*a

96 :

NFA
a

(a U b)*ab

q0
b

q0

1
b

a
2

q0

ab

97 :

NFA
a
2

)(a U b
q0
b

a
*)(a U b

q0
b

98 :

NFA
4

(a / b)*ab
a

99 :


IF
= Letter

any
letter
6

)
5

(
4

I
1

100 :

:
:





) SLR LR LL(1 LALR

101 :

1-4
-1
-2
-3

-4

102 :

2-4

103 :

1-2-4 -


()

104 :

3-4

-1 .
-2 .

-3 .
-4 .

105 :

3-4
-

106 :

3-4
-

-Panic Mode
-Phrase level
-Error production

-Global correction

107 :

3-4 Panic mode -

- .

108 :

3-4 Phrase Level -

109 :

3-4 Error production -

110 :

3-4 Global Correction -

111 :

4-4
: V * ( V
)U

)G ( V , , P , S


( S ( L
+

) A u ( A V , u ( U V

112 :

1-4-4 -

) w (V U
S. w

* w
S w

G ) L(G
{* }w.

113 :

4 -4
S
A

AA
AAA \ bA\ Ab\ a

S AA
aA
aAAA
abAAA
abaAA
ababAA
ababaA
ababaa

114 :

S
S AA

AAAA
aAAA
abAAA
abaAA
ababAA
ababaA
ababaa

ababaa

AA
Aa
AAAa
AAbAa
AAbaa
AbAbaa
Ababaa
ababaa

AA
aA
aAAA
aAAa
abAAa
abAbAa
ababAa
ababaa

S aSb \ aSbb

S aSdd \A
A bAc \ bc

S aS aB
B bB b

115 :

S aSa \ aBa
B bB \ b

S abScB
B bB \b

5-4 -

-1

-2
-3
-4

116 :

6-4 -
-1 .
-2

-1 )LL (1


-2

117 :

6-4 -
( )

.

118 :

1-6-4

-1

-2

-3 AX1, X2,,Xn

-4 X1,X2,,Xn

119 :

`E

`E

`T

`TE
+TE` \
`FT
* FT` \
(E) \ id

E:

E
E`
T
T`
F

E`:

T:

120 :

13

17

`T

12

16

11

15

10

14

T`:

F:

id

121 :


S cAd
A ab \ a

cad

S
d

()

S
c

a
()

()

122 :

2-6-4

] A[A,a a

123 :

2-6-4
$

X
Y
Z

124 :

2-6-4

-1 X= a = $

-2 X= a $ X

-3 X ][A , a

125 :


E
TE`
E TM
E`
+TE`\ \
M +TM
T FN
FT`
N
T` * *FN
FT`\ \
F
F (E)
(E)\ \idid

id

E
E`

E TE`

T FT`

T`
F

126 :

F id

E TE`
E` +TE`

E`

E`

T`

T`

T FT`
T`

T` * FT`

F (E)


$E

Id + id * id$

$E`T

Id + id * id$

$E`T`F

Id + id * id$

$E`T`id

Id + id * id$

$E`T`

+id * id$

$E`

+id * id$

$E`T

+id * id$

$E`T

Id * id$

$E`T``F

Id * id$

$E`T`id

Id * id$

$E`T`

*id$

$E`T`F*

*id$

$E`T`F

Id$

$E`T`id

Id$

$E`T`

$E`

127 :

TE`
T FT`
F id
E

E +TE`

T`

FT`
F id

T`

* FT`
id

E`

T`

7-4 Follow First


First

) first (a a.
a
Follow

A .

128 :

1-7-4 )Follow ( A
$ -1 ) Follow (S $
.

-2 A EBF ) First (F
) (B .
-3 A EB A EBF ) First (F (
) Follow(A ) Follow (B .

Follow

129 :

1-7-4 )First ( A
-1 X First (X) }{X

-2 X ) First (X .

-3 X X Y1Y2Yn a ,i
) First(Yi ) First ( Y1(First )Yn
a ) First (X .

130 :

First Follow
E
TE`
E TM
E`
+TE`\ \
M +TM
T FN
FT`
N
T` * *FN
FT`\ \
F
F (E)
(E)\ \idid

First (E) = First (T) = First (F) = { ( , id }


First (E`) = { + , }
First (T`) = { * , }
Follow (E) = Follow (E`) = { ) , $ }
Follow (T) = Follow (T`) = { + , ) , $ }
Follow (F) = { + , * , ) ,$ }

131 :

8-4
-1 A a 2 3 .

-2

) A E First (E ] M[A , a .

-3 ) First (E A a b ) Follow (A ] M[A , b .


) First (E $ ) Follow ( A A a ] M [ A , $ .

132 :


`TE
+TE` \
`FT
* FT` \
(E) \ id

}First (TE`) = First (T) = { ( , id

`E TE

E
E`
T
T`
F

id

`E TE

133 :

9-4 )LL(1
-1 .
-2 A E \ F G a E
a .

-3 E F .
-4 E F ) Follow ( A .

134 :

LL (1)
E
E`
T
T`
F

TE`
+TE` \
FT`
* FT` \
(E) \ id

: LL (1)

First ( +TE`) = { + }, First ( ) , { } ( + ) =


First ( E` ) = { + , } , follow ( E` ) = { $ , ) } , { + , } { $ , ) } =
First ( *FT) = { * } , First ( ) = { } , { * } { } =
First ( T`) = { , * } , Follow ( T`) = { $ , ) , + } , { , * } { $ , ) + } =
First ((E)) { ( } , First ( id ) = { id } , { ( } { id } =

135 :

)LL (1

2
3,4

1
2
3
4
5

i
1

S iEtSF
Sa
F eS
FS
Eb

S
F
E

) LL (1.

136 :

10-4

-1
-2 A a

137 :

1-10-4
) Follow (A


Follow
) First (A A

138 :


-1

-2 ( synch ) Follow

-3

139 :


`TE
+TE` \
`FT
* FT` \
(E) \ id

)id + * id

E
E`
T
T`
F

1
$

E`
T`

T`

`E TE

E
`E

`T FT

`E TE
E`

id

`E` +TE
`T FT
)F (E

`T` * FT

T`

F id

`T
F

140 :

id

E
E`

E TE`

T
T`
F

141 :

E TE`

T`
synch

synch

synch

E` E`
T FT`
synch synch

E` +TE`
T FT` synch
F id

T` T`
T` * FT`
synch F (E)
synch synch


3
$E

)Id *+ id$

$E

Id *+ id$

$E`T`

Id *+ id$

$E`T`F

Id *+ id$

$E`T`id

Id *+ id$

error , skip )
id is in First ( E)

$E`T`

*+ id$

$E`T`F*

*+ id$

$E`T`F

+ id$

Error M [F, + ] = synch

$E`T`

+ id$

F has been poped

$E`

+ id$

$E`T+

+ id$

$E`T

id$

$E`T`F

Id$

$E`T`id

Id$

$E`T`

$E`

142 :

11-4

143 :


abbcde
aABe
Abc \ b
d

S
A
B

abbcde
aAbcde
aAde

aABe

abbcde

aAbcde

aABe aAde

144 :

1-11-4 -

145 :


abbcde
abbcde
aAbcde
aAde

aABe

aABe
Abc \ b
d

S
A
B

Ab
A Abc

Bd

146 :


(1) E E + E
(2) E E * E

) (3) E ( E
(4) E id

EE+E

E+E*E

E + E * id3
E + id2 * id3
id1 + id2 * id3

147 :

id1

id1 + id2 * id3

id2

E + id2 * id3

id3

E + E * id3

E*E

E+E*E

148 :

1-1-11-4 -

-1 W W = Yn
n .
-2 Bn-1Yn-1
.Yn-2
-3
S

149 :


(1) E E + E
(2) E E * E

id1 + id2 * id3

) (3) E ( E
(4) E id

E id

id1

id1 + id2 * id3

E id

id2

E + id2 * id3

E id

id3

E + E * id3

EE*E

E*E

E+E*E

EE+E

E+E

E+E
E

150 :

2-11-4

-1
-2

151 :

12-4

-1

-2 1
-3

152 :

1-12-4

153 :


(1) E E + E
(2) E E * E

) (3) E ( E
(4) E id
EE+E

E+E*E
id1 + id2 * id3

E + E * id3
E + id2 * id3
id1 + id2 * id3

154 :

id1 + id2 * id3 $

Shift

$id1

+ id2 * id3 $

Reduce by E id

$E

+ id2 * id3 $

Shift

id2 * id3 $

Shift

$E +

$E + id2

* id3 $

Reduce by E id

$E + E

* id3 $

Shift

id3 4

Shift

$E + E *
$E + E * id3

Reduce by E id

$E+E*E

Reduce by E E * E

$E+E

Reduce E E + E

$E

accept

155 :

13 -4

156 :

14-4 -

157 :

14-4

-1 .
-2
.

158 :

E EAE \ ( E ) \ - E \ id
\ A +\-\/

159 :

1-14-4


( )

160 :

2-14-4
3

<. b

a b.

a = b

a b .

a.> b

a b.

161 :

2-14-4
-1

*,+ <.

* .> +

-2

162 :

>.
>.
>.
>.
=

id

<. .> <.


<. .> <.
<. = <.
>.
>.
<.
<.

<.
>.
<.
>.
>.
<.

>.
>.
<.
>.
>.
<.

`TE
+TE` \
`FT
* FT` \
(E) \ id

E
E`
T
T`
F

+
*
(
)
Id
$

163 :

3-14-4
-1
-2 $

-3

-4 >.

164 :

3-14-4
-5 ( ) = <.

< -6 .5 >.

165 :

id + id * id

$ <. Id .> + <. Id .> * <. id .> $.

:1

> . id +

:2

< . =

166 :


:3

> . <. id E

:4

{ } id2 , id3
$ <. + < . * .> $

:5

+ * * $ E * E E

:6

+ $ E + E E

167 :

4-14-4

-1 A B A . > B B <. A .

-2 A B B <. A , A <. B :
B .> A , A .> B:

168 :

4-14-4
-3 A .
A

( <.

>) .

>A .

A .> $

$ <. A

A <. id

id .> A

( A <.

-4 :
<. id
)

>id .

) >.

<.

)=(

>id .

( $ <.

$ <. id

.> $

169 :

-
- 1 ( )

* -2 /

+ -3

170 :

-
$

>.
>.
>.
>.
>.
>.
>.

id

<.
<.
<.
<.
<.

<.
<.
<.
<.
<.

<.
<.
<.
<.
<.
>.
<.
>.
<.

<.
<.
>.
>.
>.
>.
<.
>.
<.

<.
<.
>.
>.
>.
>.
<.
>.
<.

>.
>.
>.
>.
>.
>.
<.
>.
<.

>.
>.
>.
>.
>.
>.
<.
>.
<.

>.
>.
>.
>.
>.
>.
= <. <.
>.
<. <.

+
*
/

Id

(
)
$

171 :

5-14-4 -
f g
f( a ) <. g ( b ) -1 <. b

f( a ) = g ( b ) -2 a = b

f( a ) .> g ( b ) -3 a .> b

172 :

id

) f ( * ) < g( id

* < . Id

) f ( id ) > g ( id

id .> id

173 :

)f (id

)g (id

)*( g

)*( f

)f (+

)g (+

)g ($

)f ($

Id

174 :

5-14-4 -
-1

-2

175 :

15 -4 LR
LR
-1
-2
-3

-4

176 :

1-15-4 -LR

-1

-2 LR

177 :

2-15-4 -LR

LR SLR

LR CLR

LR
LALR

178 :

3-15-4 - LR
an

ai

a1
a
.
.
.
S

goto

Action
$

179 :

4-15-4 LR
a

)(S

s0X1s1X2s2.Xmsm sm
.

180 :

5-15-4 LR
( goto )

action

]action [sm , ai

goto

action
a1 a2 ai
m

181 :

5-15-4 LR

]action [ sm ,ai

sn = shift

a n

rn=reduce

accept

error

182 :

6-15-4 LR
-1 w $

-2 s0
-3 ][s0 , $

-4
][ shift , reduce, accept , error

183 :

6-15-4 LR
-5 :
S0 X1 s1 X2 s2.Xm sm , ai ai+1 . an $

-6 a s :
Shift , reduce

-7 Shift s :
S0 X1 s1 X2 s2Xm sm ai s, ai+1an $

184 :

6-15-4 LR
-8 reduce A:
S0 X1 s1 X2 s2 Xm-r sm-r A s , ai ai+1 an $

-9 accept

-10 error

185 :

LR
1EE+T
2ET
3TT*F
4TF
5 F (E)
6 F id

action
id
0

s5

s4

s6

r2

s7

r2

r2

r4

r4

r4

r4

s4

r6

r6

r6

s5

s4

s5

s4

r6

10

s6

r1

s7

r1

r1

10

r3

r3

r3

r3

11

r5

r5

r5

r5

acc

s5

186 :

goto

s11

LR
id * id + id

(1) 0

id * id + id $

s5

(2) 0 id 5

*id + id $

r5

(3) 0 F 3

*id + id $

r3

(4) 0 T 2

*id + id $

s7

(5) 0 T 2 * 7

*id + id $

s5

(6) 0 T 2 * 7 id 5

+ id $

r5

(7) 0 T 2 * 7 F 10

+ id $

r2

(8) 0 T 2

+ id $

r1

(9) 0 E 1

+ id $

s6

id $

s5

(11) 0 E 1 + 6 id 5

r5

(12) 0 E 1 + 6 F 3

r3

(13) 0 E 1 + 6 T 9

r9

(14) 0 E 1

acc

(10) 0 E 1 + 6

187 :

7-15-4 LL LR
)LL(K

K

)LR(K
K

188 :

16-4 SLR

LR


A . XYZ

A XYZ

A X .YZ
A XY .Z
A XYZ.

189 :

16-4 SLR

S` S
.

190 :

1-16-4 -SLR
S AaAb
S BbBa
A
B

:1
S` S
S AaAb
S BbBa
A
B

S` . S
S .AaAb
S .BbBa
A.
B.

:2

191 :

1-16-4 -SLR
:3

S AaA .b
S BbB .a

S Aa .Ab
S Bb .Ba
A.
B.

S` S .
S A .aAb
S B .bBa

S AaAb .
S BbBa .

192 :

2-16-4 - SLR
) LR(0 ) LR(0
SLR

closure goto

193 :

2-16-4 - SLR

-1 I closure

closure
-2 B .K A M .BNclosure

B K

194 :

- SLR
} ]I ={ [E` .E

E` E
EE+T\T
TT*F\T
F (E) \ id

E` .E
E .E + T

E .T
T .T * F

= )Closure (I

T .F
)F .(E
F id

195 :

2-16-4 - SLR

A B1.B2 MB1 :

* M A W * M B1B2 W
S` .

196 :

- SLR

*E+T

E` E
EE+T\T
TT*F\T
F (E) \ id

I7
2

T T * .F

)I7: F .(E

F .id

197 :

2-16-4 - SLR

closure ] [A Q X K
] A [ Q . X K . I

) goto(I , X

R X
R . I

198 :

- SLR
} ]I ={ [E` E.] , [ E` E. + T

E` E
EE+T\T
TT*F\T
F (E) \ id

EE+.T
T .T * F
T .F

= )goto (I , +

)F .(E
F .id

199 :

2-16-4 - SLR )LR(0


-1 }] closure { [ S` .S C

-2 I C X :
-1 -2 ) goto ( I , X C :

goto ( I , X) -1-1-2 C .

200 :

- SLR
E` .E
E .E + T

I0:

I2:

I3:

T F.

T .F

F (.E)

F .(E)

E .E + T

F .id

E .T

I4:
I1:

E` E
EE+T\T
TT*F\T
F (E) \ id

T T. * F

E .T
T .T * F

E T.

I5:

T .T * F

E` E.

T .F

E E. + T

F .(E)
F .id

201 :

F id.

- SLR
E E + .T

I6: T .T * F
T .F

I8:

E` E
EE+T\T
TT*F\T
F (E) \ id

F (E.)
E E. + T

F .(E)
F .id

I9:

E E + T.
T T. * F

I11:
T T * .F

I7: F .(E)

I10: T T * F.

F .id

202 :

F (E).

- SLR
S` S
S L=R \ R
L * R \ id
RL
I0: S` .S

I3: S R.

I7: L *R.

I4: L *.R

I8: R L.

I5: L id.

I9: S L=R.

I1: S` S.
I2: R L.=R

I6: S L=.R

R L.

203 :

2-16-4 - SLR
-1 ` ( G `) S
} C = { I0 , I1 ,In
-2 i ( Ii )I2 action i :
action [i , a] = shift j - ][A Q .aK
Ii goto (Ii , a )=Ij

- action [i , a] = reduce A Q
a )` Follow (A =S ] [A Q. Ii
- action [i , $] =accept
] [S` S. Ii

204 :

2-16-4 - SLR
- 3 goto i A
: goto ( Ii , A ) =Ij goto ( I , A ) = j

4 error 2 3

- 5 ][S` .S

205 :

- SLR
E` E
EE+T\T
TT*F\T
F (E) \ id

E` .E
E .E + T

I0:

E .T

no action

T .T * F
T .F

F .(E)

action [ 0 , ( ] = shift 4
action [ 0 , id] = shift 5

F .id

I1:

E` E.

action [ 1, $ ] = accept

E E. + T

action [ 1 , + ] = shift 6

206 :

- SLR
3

} ) Follow (E) = { $ , +,

action [ 2 , $ ] = action [ 2 , + ]=action


[ 2 , ) ] = reduce E T

action [ 2 , * ] = shift 7

E T.

I2:

T T. * F

.
.

207 :

17-4 -CLR
]Q.K , a

[A

A QK a
). ($

Q a

208 :

17-4 -CLR
] [A Q.K , a y

-1 * &QKW
S &AW*:
y = &Q
a W W a $

209 :

17-4 -CLR )LR(1


closure
-1 ] [A Q.BK , a I :

B y b ):First (K

] [B .y , b I
1

210 :

17-4 -CLR
goto

J ] [A QX.K , a I

) closure ( J .

211 :

17-4 -CLR
)`item (G
} )} C= { closure ( { S` .S , $ :
I C :X
) goto ( I , X C :

) goto ( I , X C .

212 :

-CLR
S` S
S CC
C cC \d

S C.C , $

I2
S` .S , $

I0

S .CC , $

C .cC , $
C .d , $

I4

C d. , c \ d

C c.C , c \ d

I5

S CC. , $

C .cC , c \ d
C .d , c \ d

I3
I1

C .d , c \ d

S` S. , $

213 :

C .cC , c \ d

-CLR
C c.C , $
C cC. , $

I9

C .cC , $

I6

C .d , $

C d. , $

C cC. , c \ d

I7

I8

214 :

-CLR
goto

I1

I5

I2

I0

c
I9

I6

d
I7

c
d
c

I8

I3

d
I4

c
d

215 :

17-4 -CLR
-1 } C = { I0 , I1 , , In `G

-2 i I action :

action [ I , a ] = shift j - ] [ A Q.aK , b


Ii goto(Ii , a) = Ij

a -

action [ I , a ] = reduce A ][A Q. , a


Ii `A = S

216 :

17-4 -CLR
action [ i , $]= accept - ] [S` S. , $ Ii

goto ( i , a) = j -3 goto ( Ii , A ) = Ij

-4 error 2 3


][S` .S , $

217 :

-CLR
goto
C
2

action
$

s4

s3

acc

0
1

s7

s6

s4

s3

r3

r3

r1

1 S` S
2 S CC
3 C cC \d

5
s7

s6

r3

6
7

r2
r2

r2

8
9

218 :

18-4 -LALR
-1 }C= { I0 , I1 , In

-2

-3 }C= { J0 , J1 , Jn
action

action [ I , a ] = shift j - ] [ A Q.aK , b


Ii goto(Ii , a) = Ij

219 :

18-4 -LALR
action [ I , a ] = reduce A a - ][A Q. , a
Ii `A = S
action [ i , $]= accept - ] [S` S. , $ Ii

-4 goto :

J ( ) I0 I1Ik
(goto ( I1,X), goto (I2,X(,goto )Ik,X
.

220 :

18-4 -LALR
K ( ) I0 I1Ik
) goto(I1, Xgoto (J,X)=X

221 :

-LALR
1 S` S
2 S CC
3 C cC \d

I8 , I9

C cC. , c \ d \ $

I4 , I7

I3 , I6

C d. , c\ d \ $

C c.C , c \ d \ $
C .cC, c \ d \ $
C .d , c \ d \ $

222 :

-LALR
goto
C

action
$

s47

s36

acc
5
89
r3

s47
s47

s36
s36

36

r3

r3

47

r1

r2

r2

r2

89

223 :

LR LALR
LR
0c3c3d4
ccd$
goto

action
[ 4, $ ]= e

224 :

LR LALR
LALR

0 c 36 c 36 d 47

ccd$

goto

action
[47,$]= r3
Cd

0 c 36 c 36 C 89

[89,$]=r2
C cC.

0 c 36 C 89
.

0C2

225 :

18-4 -LALR

-1 I

-2 action

-3 goto

226 :

18-4 -LALR
-1 B y.V K :
J` := closure ({[B y.v , #]})-2

-3

] [A M.XN , a` J a = #

-4 a A MX.N )goto ( I , X

227 :

18-4 -LALR

- 5 ] [A M.XN , # ` J
B y.v I A MX.N ) goto ( I , X
.

228 :

-LALR 18-4
-1 LR )LR
-2
LR X
-3

-4

229 :

-LALR 18-4
-5 i
.

-6 2
i

-7 6-4

230 :

-LALR
: 1 LR
I3: S R.

L *R.

I7:

R L.

I8:

S L=R.

I9:

S` S
S L=R \ R
L * R \ id
RL

I4: L *.R
I0: S` .S
I5: L id.

I6: S L=.R

I1: S` S.
I2: R L.=R
R L.

231 :

-LALR
: 2

S .S , #
S .L=R , #
S .R , #
= \ L .*R , #
= \ L .id , #
R .L , #

)}]Closure ( {[S` .S , #

232 :

-LALR
: 3

S` S.

I1:

R L.=R

I2:

S` .S

I0:

R L.

S R.

I3:

L *.R

I4:

L id.

I5:

I6: S L=.R

R L.=R

I2:

233 :

-LALR

L *.R

I4:

L id.

I5:

L *R.

I7:

R L.

I8:

L *.R

I4:

L id.

I5:

R L.

I8:

L *.R

I4:

I6: S L=.R

I9: S L=R.

234 :

-LALR
: 4

PASS3

PASS2

PASS1

INIT


I0: S` .S
I1: S` S.

I2: R

$
$

$
$

$
$

I2:

=$
=$

=$
=$

=$
=$

=$

=$

=$

=$

L.=R
R L.
S R.
L *.R
L id.
S L=.R
L *R.
R L.
S L=R.

=
=

I3:
I4:

I5:
I6:
I7:
I8:
I9:

235 :

-LALR 18-4
action

action

action

236 :

-LALR
1EE+T
2ET
3TT*F
4TF
5 F (E)
6 F id

action
id
0

s5

s4
s6

r2

s7

r2

r2

r4

r4

r4

r4

s4

r6

r6

r6

s5

s4

s5

s4

r6

10

s6

r1

s7

r1

r1

10

r3

r3

r3

r3

11

r5

r5

r5

r5

acc

s5

237 :

goto

s11

-LALR
2

action
0,4,6,7

s5

Id

s4

error

any


s6

acc

error

any

238 :

-LALR
3

s7

r2

any


r4

any

action
5,10,11

239 :

-LALR
4

s6

s11

error

any


s7

r1

any

240 :

19-4 LR
action

241 :

20-4 LR
panic mode

-1 s goto A

-2 A
-3 ] goto [s , A

242 :

20-4 LR
Phrase level

-1

-2
-3

243 :

21-4 Yacc -
Yacc
-1
Yacc

y.tab.c

-2
C
-3
LR

a.out

( )

-4 :

Yacc

a.out

translate.y:

y.tab.c

244 :

- Yacc 1-21-4

Yacc


c

%%

Yacc


%%

245 :

- Yacc 1-21-4
c }%
{ , %

246 :

- Yacc 2-21-4
%%

} > {1 : <1

> <

} > {2 : <2
} > { 3 : <3
.
.
.

247 :

Вам также может понравиться