You are on page 1of 22

CHNG TRNH DCH

BI 16: THUT TON PHN TCH TT


NH

Ni dung
1. B phn tch c php tt nh
2. Tip cn top-down
3. Phn tch LL(1)

FIRST
FOLLOW
Bng phn tch LL(1)
V d

4. Bi tp

TRNG XUN NAM

Phn 1

B phn tch c php tt nh

TRNG XUN NAM

Rng buc v thi gian tnh ton


Cc thut ton phn tch vn nng (CYK, Earley)
Phn tch mi vn phm phi ng cnh
Tc chp nhn c: O(n3) vi n l di chui vo

i vi nhng m ngun cc ngn ng lp trnh,


gi tr ca n c th ln ti vi triu, bi ton phn
tch vn phm tr nn rt c bit
Tc chp nhn c nu l gn tuyn tnh O(n)
Vn phm n gin, cht ch, n ngha

H qu l ny sinh nhu cu xy dng cc b phn


tch vn phm tt nh (deterministic)
TRNG XUN NAM

Chin lc tt nh
Th no l tt nh do rng buc phc tp
tnh ton l O(n), h qu l:
Khi nhn mt k hiu u vo, b phn tch vn phm
cn ngay lp tc quyt nh s s dng lut sinh no cho
trng hp ny
Quyt nh chn lut sinh no cn phi tt khng
phi th li phng n khc
Tnh cht tt nh ~ khng c quay lui

Ci gi phi tr cho s tt nh: cc b phn tch


vn phm s khng cn vn nng na, nhng tt
dng trong thc t
TRNG XUN NAM

Kin trc chung: bng phng n


Vic la chn ngay lp tc phng n suy dn dn
ti yu cu cn nghin cu trc b lut vn phm
v c cc phng n ph hp trong cc tnh hung
c th xy ra
Cc thut ton phn tch tt nh u s dng k
thut xy dng trc bng phng n
C nhiu k thut xy dng bng phng n khc
nhau ng vi cc phng php tip cn khc nhau
Vi cc loi bng phng n, thut ton phn tch
cng c s khc bit khi thc hin on nhn
TRNG XUN NAM

Phn 2

Tip cn top-down

TRNG XUN NAM

Tip cn top-down
Hy quan st qu trnh thc hin phn tch topdown chui w = ( ) ( ) ca vn phm:
S(S)S|
Chng ta tm qu trnh suy dn S * w = ( ) ( )
y chng ta ch c 1 non-terminal duy nht S
K hiu kt thc ( v )

Trong bc suy dn u tin, S ( S ) S * ( ) ( )


Vy bc 2, ta cn tm qu trnh S ) S * ) ( )
R rng trong tnh hung ny, ta khng th p dng
lut sinh S ( S ) S m phi s dng S
TRNG XUN NAM

Tip cn top-down
Quan st qu trnh suy dn t * w, ta nhn thy:
Nu bt u bi terminal, th terminal nht thit
phi trng vi k hiu bt u ca w, trong tnh hung
ny ta gt b k hiu ny c 2 chui
Nu bt u bi non-terminal A, th A nht thit phi
suy dn (trc tip hoc gin tip) ra k hiu bt u ca
w (w1) hoc ra
Ta c th da trn vn phm G tnh c A c suy ra
w1 c hay khng?
Lp mt bng phng n 2 chiu, 1 chiu gm cc nonterminal, 1 chiu gm cc terminal, ta a ra cc tnh
hung p dng lut sinh cho mi cp (A, w1)
TRNG XUN NAM

Phn 3

Phn tch LL(1)

TRNG XUN NAM

10

Phn tch LL(1)


Bc

Chui ngun

Chui ch

Hnh ng

S$

()()$

S(S)S

(S)S$

()()$

gt b

S)S$

)()$

)S$

)()$

gt b

S$

()$

S(S)S

(S)S$

()$

gt b

S)S$

)$

)S$

)$

gt b

S$

TRNG XUN NAM

11

Phn tch LL(1)


Nh vy b phn tch LL(1) hot ng tng t
nh phn tch top-down, nhng khng c bc
quay lui (v khng c s la chn th-sai 1 trong
nhiu lut sinh)
Vn ln nht: lm sao xy dng c bng
phng n?
LL(1) ngha l g? Vit tt ca Left-to-right parse,
Leftmost-derivation, 1-symbol lockahead
Nh vy LL(k) c ngha l nhn trc k k hiu
TRNG XUN NAM

12

FIRST(X)
Nu X l k hiu kt thc th FIRST(X) l {X}
Nu X l mt lut sinh th thm vo FIRST(X)
Nu X Y1Y2Y3...Yk l mt lut sinh th:
Thm tt c cc k hiu kt thc khc ca FIRST(Y1) vo
FIRST(X)
Nu FIRST(Y1) th tip tc thm vo FIRST(X) tt c cc
k hiu kt thc khc ca FIRST(Y2)
Nu FIRST(Y1) FIRST(Y2) th thm tt c cc k hiu
kt thc khc FIRST(Y3)
Tip tc nh vy cho ti Yk
Thm vo FIRST(X) nu i=1k FIRST(Yi)
TRNG XUN NAM

13

FIRST()
nh ngha FIRST(): gi s l mt chui cc k
hiu vn phm, FIRST() l tp hp cc k hiu kt
thc m n bt u mt chui dn xut t
Gi s = X1X2Xn
Thm vo FIRST(): FIRST(X1)-{}
Vi mi i=2,3,,n; nu FIRST(Xk) cha vi mi
k=1,2,i-1 th thm vo FIRST(): FIRST(Xi)-{}
Nu vi mi i=1,2,n; nu FIRST(Xi) cha th thm
vo FIRST()

TRNG XUN NAM

14

Tnh FIRST: v d
Xt vn phm G:
E T E'
E' + T E' |
T F T'
T' * F T' |
F (E) | id

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


FIRST(E') = {+, }
FIRST(T') = {*, }
TRNG XUN NAM

15

FOLLOW
nh ngha FOLLOW(A): tp hp cc k hiu kt
thc a m n xut hin ngay sau A (bn phi ca A)
trong mt dng cu no
Tc l tp hp cc k hiu kt thc a, sao cho tn ti
mt dn xut dng S * Aa
Ch rng nu A l k hiu phi nht trong mt dng
cu no th $ FOLLOW(A) ($ l k hiu kt thc
chui nhp)

TRNG XUN NAM

16

Tnh FOLLOW
Tnh FOLLOW (A): p dng cc quy tc sau cho
n khi khng th thm g vo mi tp FOLLOW
c na
t $ vo follow(S), trong S l k hiu bt u ca
vn phm v $ l k hiu kt thc chui nhp
Nu c mt lut sinh A B th thm mi phn t
khc ca FIRST()vo trong FOLLOW(B)
Nu c lut sinh A B hoc A B m
FIRST() th thm tt c cc phn t trong
FOLLOW(A) vo FOLLOW(B)
TRNG XUN NAM

17

Tnh FOLLOW: v d
Xt vn phm G:
E T E'
E' + T E' |
T F T'
T' * F T' |
F (E) | id

FOLLOW(E) = FOLLOW(E') = { $, ) }
FOLLOW(T) = FOLLOW(T') = { +, ), $ }
FOLLOW(F) = {*,+, ), $ }
TRNG XUN NAM

18

Bng phn tch LL(1)


1. Vi mi lut sinh A ca vn phm, thc hin:
1. Vi mi k hiu kt thc a FIRST(), thm A
vo M[A,a]
2. Nu FIRST() th a lut sinh A vo M[A,b]
vi mi k hiu kt thc b FOLLOW(A)
3. Nu FIRST() v $ FOLLOW(A) th a lut
sinh A vo M[A,$]

2. Cc trng trong bng tng ng vi li (error)


Ch : mt trong bng c th cha nhiu suy dn,
tnh hung ny gi l bng c nhp nhng
TRNG XUN NAM

19

V d
Xt vn phm G:
E T E'
T F T'

E' + T E' |
T' * F T' |

TRNG XUN NAM

F (E) | id

20

Phn 4

Bi tp

TRNG XUN NAM

21

Bi tp
1. Tnh First, Follow v to bng phn tch LL(1)
cho vn phm sau:
S Ac | BBc
C b | bCd
D bd | bDd

A BC
B dBb | dDb |

2. Tnh First, Follow v to bng phn tch LL(1)


cho vn phm sau:
S AD | abc
A Bc
B dBc | CC
D Dd |
C DCb | CDb |
TRNG XUN NAM

22

You might also like