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

1

BI GING
CHNG TRNH DCH
B mn khoa hc my tnh
Trang 2
Chng 3: Phn tch c php
1. Cc chin lc phn tch
2. Phn tch top-down
3. Phn tch bottom-up
4. Phn tch bng CYK
5. Phn tch LL
6. Phn tch quy trn xung
Trang 3
1. Cc chin lc phn tch
S dng vn phm phi ng cnh (VPPNC)
biu din c php ca NNLT
C s phn tch c php i vi VPPNC l bi
ton thnh vin:
Cho G = (V
T
, V
N
, S, P), L(G) = {w e V
T
*: S * w},
xu vo w
Cu hi: weL(G) ???
Trang 4
1. Cc chin lc phn tch
Chin lc phn tch top-down:
Qu trnh xy dng cy phn tch c php theo li t
gc n l.
Xut pht t gc l k t bt u, c gng p dng
cc sn xut xy dng mt cy c tp cc nhn
ca l t tri qua phi l xu vo
Trang 5
1. Cc chin lc phn tch
Chin lc phn tch bottom-up
Xut pht t cc l c nhn l cc k t ca xu vo,
ta c gng p dng cc sn xut xy dng cc nt
trong.
Nu xy dng c mt nt gc l k t bt u th
c cy suy dn cho xu vo
Trang 6
1. Cc chin lc phn tch
C 2 phng php
Phn tch quay lui: trong qu trnh xy dng cy c
php thc hin th ln lt, c bc quay li th
sn xut khc
Phn tch tt nh: trong qu trnh xy dng cy c
php ta lun la chn ng sn xut cn dng.

Trang 7
2. Phn tch top-down
Input: Vn phm G=(V
T
,V
N
,S,P), mt xu vo x
Output: Cy suy dn cho xu vo x hoc tr li
x khng c on nhn
Thut ton: nh s cc sn xut 1, 2, 3
Bc 1: Xy dng mt cy ch c nt S lm gc, gi
S l nt hot ng v k hiu cn phn tch l k
hiu u tin trn xu vo.
Trang 8
2. Phn tch top-down
Bc 2:
Nu nt hot ng l mt k hiu khng kt thc A:
Chn sn xut u tin c A lm v tri to ra k con
trc tip ca A (AX
1
X
2
X
k
), sau ly X
1
lm nt
hot ng.
Nu k = 0 (Ac) th nt hot ng l nt bn phi ca
A trn cy.

Trang 9
2. Phn tch top-down
Bc 2:
Nu nt hot ng l k hiu kt thc a th s so snh
a vi k hiu cn phn tch:
Trng nhau: nt hot ng l nt bn phi ca a trn
cy v k hiu cn phn tch l k hiu tip theo trn
xu vo.
Khng trng: quay li 1 bc th mt sn xut
khc. Nu tt c sn xut c th th quay li
bc trc .

Trang 10
2. Phn tch top-down
Qu trnh dng li khi:
To ra cy suy dn cho xu vo
Th ht kh nng nhng khng xy dng ln cy suy
dn. Tc l xu khng c on nhn
iu kin dng: vn phm khng c qui tri

Trang 11
2. Phn tch top-down
V d: Cho vn phm sau
S cAd
A ab | a
Xu vo l cad
nh s sn xut:
(1) : S cAd
(2) : A ab
(3) : A a
Trang 12
2. Phn tch top-down
Qu trnh phn tch top-down
Trang 13
3. Phn tch bottom-up
y l phng php gt thu gn (shift Reduce
Parsing).
S dng Stack S dng cha k hiu ca vn
phm cn phn tch.
Mi bc thc hin mt trong hai hnh ng gt
hoc thu gn. Lun th thu gn trc khi gt
Trang 14
3. Phn tch bottom-up
Input: Vn phm G khng c c-sn xut v
A
+
A, xu vo x
Output: x c c on nhn hay khng?
Thut ton:
Bc 1: Gt k t u tin ca xu x vo Stack S
Bc 2: Lp
Xt mi xu e c th trn nh Stack. V d: Stack c
abcd d, cd, bcd, abcd.
Trang 15
3. Phn tch bottom-up
Nu tn ti A e th thc hin thu gn:
Ly tt c cc k hiu ca xu e trong Stack.
y k hiu A vo Stack.
Trong trng hp c nhiu xu e cng tha mn th
nh s th ln lt.
Nu khng th thu gn th gt k hiu tip theo trn
xu vo x vo Stack.
Trang 16
3. Phn tch bottom-up
Nu gt ht k hiu trn x m trong Stack
khng phi cn S th quay lui li a ch sau cng
m tin hnh thu gn (khi phc hin
trng xu vo, Stack ti thi im trc khi thu
gn)
Nu cn mt thu gn no khc c th th s tin
hnh th theo thu gn .
Trang 17
3. Phn tch bottom-up
Thut ton dng khi gt ht cc k hiu trn
xu vo v trong Stack ch c mt k hiu S. Khi
ta kt lun xu vo x c on nhn.
Ngc li, khi th ht cc trng hp m trong
Stack khng cha ch S th kt lun xu x khng
c on nhn.
Trang 18
3. Phn tch bottom-up
V d: Cho vn phm
S aABe
A Abc | b
B d
Xu vo: abbcde


Trang 19

Trang 20
4. Phn tch bng CYK
Dng chun Chomsky
VPPNC dng chun Chomsky nu mi sn xut
c dng A BC hoc A a
Mi vn phm khng cha c - sn xut th u c
th chuyn v dng chun Chomsky.
Trang 21
4. Phn tch bng CYK
M t bng: mi trong bng cha mt tp cc
k hiu khng kt thc.

Xu vo x = a
1
a
2
a
n

Nu xeL(G) S e T
1n

{ }
*
ij N i j+i-1
T = X V | X a ...a e
{ }
*
1n N 1 n
T = X V | X a ...a e
Trang 22
4. Phn tch bng CYK
i - ch s ct
ng trc
j ch s dng
ng sau
i
j
1
1
2
2
3
3
4
4
T
14
Trang 23
4. Phn tch bng CYK
Thut ton xy dng bng:
Bc 1: Xy dng hng 1 ( j = 1)


Bc 2: Gi thit xy dng c cc hng 1, 2, 3,
, j -1. Xy dng hng j


Bc 3: Lp li bc 2 cho n khi tnh c T
1n
{ }
i1 N i
T = X V | X a P e e
{ }
ij N ik i+k,j-k
T = X V | k [1.. j - 1]: B T , C T , X BC P e - e e e e
Trang 24
4. Phn tch bng CYK
i
j
1
1
2
2
3
3
4
4
Trang 25
4. Phn tch bng CYK
V d: Cho vn phm
S AA | AS | b
A SA | AS | a
Xu vo abaab.
Trang 26
4. Phn tch bng CYK
Thut ton xy dng cy phn tch
Th tc Gen(i, j, A) vit ra dy sn xut trong suy dn
A * a
i
a
i+1
a
i+j-1
Gi th tc Gen(1, n, S)
Cy suy dn l cy suy dn tri nht

Trang 27
4. Phn tch bng CYK
Thut ton xy dng cy phn tch
Trang 28
4. Phn tch bng CYK
V d:
S AA | AS | b
A SA | AS | a
Trang 29
4. Phn tch bng CYK
V d:
(1) S AA
(2) S AS
(3) S b
(4) A SA
(5) A AS
(6) A a
Dy sn xut: 1 6 4 3 5 6 2 6 3
Trang 30
4. Phn tch bng CYK
V d: Dy sn xut: 1 6 4 3 5 6 2 6 3
S AA aA aSA
abA abAS abaS
abaAS abaaS abaab

Trang 31
5. Phn tch LL
C s ca phn tch LL(k) da trn phng
php phn tch top-down v my tmt y
xung
M hnh:
Trang 32
5. Phn tch LL
Bng phn tch M l mng hai chiu:
Mi dng tng ng vi mt k hiu khng kt thc
Mi ct tng ng vi mt k hiu kt thc
Ti dng A, ct a: ghi sn xut v tri l A, v phi
l mt xu c th suy dn ra mt dng cu ng u
l a.
Trang 33
5. Phn tch LL
Thut ton phn tch LL(1)
Input: bng phn tch M, xu vo x
Output: Cy phn tch cho x hoc li
Cc bc thut ton:
Bc 1: y ln lt 2 k hiu $, S (k t u) vo
Stack. Thm $ vo cui xu x. K t ang xt l k t
u ca xu x.
Trang 34
5. Phn tch LL
Cc bc thut ton:
[Lp] Bc 2: X l k hiu trn nh Stack, a l k hiu
ang xt
Nu X = a = $ Thnh cng
Nu X = a = $: Ly X khi Stack, k hiu ang xt l k
hiu tip theo trn xu vo
Nu X l k hiu khng kt thc: Xt M[X, a] c
sn xut X Y
1
Y
2
Y
k
th:
Ly X khi Stack
y Y
k
, , Y
1
vo Stack
Trang 35
5. Phn tch LL
V d: cho bng phn tch sau:






Xu vo a + a*a
Trang 36
5. Phn tch LL
Qu trnh phn tch

Trang 37
5. Phn tch LL
nh ngha First v Follow
First(o) l tp cc k hiu kt thc bt u cc xu
suy dn c t o. Nu o*c th ceFirst(o)
Follow(A) l tp cc k hiu kt thc m c th ng
ngay bn phi A trong mt dng cu
Trang 38
5. Phn tch LL
Trang 39
5. Phn tch LL
Tnh First ca mt k hiu
(1) Nu X l k hiu kt thc th First(X) = {X}
(2) Nu X c l mt sn xut th ceFirst(X)
(3) Nu X Y
1
Y
2
Y
k
l mt sn xut:
First(Y
1
) \{c} c First(X)
Nu c e First(Y
j
) (j<i) First(Y
i
)\{c} c First(X).
Nu c eFirst(Y
i
) (i = 1, 2, , k) th c e First(X).
Lp li cc quy tc trn cho n khi khng thm
c g vo First(X)
Trang 40
5. Phn tch LL
Tnh First ca mt xu o = X
1
X
2
X
k

First(X
1
) \{c} c First(o)
Nu c e First(X
j
) (j<i) First(Y
i
)\{c} c First(o).
Nu c eFirst(X
i
) (i = 1, 2, , k) th c e First(o).
Trang 41
5. Phn tch LL
Tnh Follow(A).
(1) t $ vo Follow(A) vi A l k hiu bt u
(2) BoA| (vi | = c) th First(|)\{c} c Follow(A).
(3) BoA (hoc BoA| vi ceFirst(|)) th
Follow(B) c Follow(A).
Lp li cc quy tc trn cho n khi khng
thm c g vo Follow(A)
Trang 42
5. Phn tch LL
V d: Cho vn phm sau:
E TE
E +TE | c
T *FT | c
T FT
F (E) | a
Tnh First v Follow ca cc k hiu khng kt
thc
Trang 43
5. Phn tch LL
V d: Tnh First
Trang 44
5. Phn tch LL
Tnh Follow

Trang 45
5. Phn tch LL
nh ngha vn phm LL(1)
Mt VPPNC l LL(1) khi tha 2 iu kin sau:
Nu A o | | l hai sn xut phn bit th
First(o) First(|) = C
Nu A *c th First(A) Follow(A) = C
V d: vn phm v d trn l LL(1)

Trang 46
5. Phn tch LL
Thut ton lp bng phn tch
1. i vi mi sn xut A o thc hin bc 2 v 3
2. i vi mi k hiu kt thc a e First(o), thm A
o vo M[A, a]
3. Nu c e First(o), thm A o vo M[A, b] vi b e
Follow(A).
4. t tt c cc v tr cn li ca bng l li.
Trang 47
5. Phn tch LL
V d: vi vn phm cho trn, ta c bng:

Trang 48
5. Phn tch LL
nh ngha vn phm LL(1)
Mt VPPNC l LL(1) khi mi trong bng phn
tch khng cha qu mt sn xut.
V d: Vn phm cho trong v d trn l LL(1)
Trang 49
5. Phn tch LL
V d:
S A | B
A aA | b
B aB | c
Vn phm ny khng l LL(1) v
First(A) First(B) = {a}
Trang 50
5. Phn tch LL
V d:
S Aa
A aA | c
Vn phm ny khng l LL(1) v
A c
First(A) Follow(A) = {a}
Trang 51
6. Phn tch quy trn xung
Vn phm cn phn tch phi l LL(1)
Ta thc hin xy dng s c php cho tng
sn xut trong vn phm
Vit tng th tc phn tch cho cc k hiu
khng kt thc ca vn phm
Trang 52
6. Phn tch quy trn xung
Xy dng s c php
Vi a l k hiu kt thc


Vi A l k hiu khng kt thc
a
A
a
A
Trang 53
6. Phn tch quy trn xung
Xy dng s c php
A o
1
| o
2
|| o
n






Trang 54
6. Phn tch quy trn xung
Xy dng s c php
o : X
1
X
2
X
n



o : {X}
Trang 55
6. Phn tch quy trn xung
V d: xy dng s c php cho vn phm
S T A
A + T A | c
T F B
B * F B | c
F (S) | a
Trang 56
6. Phn tch quy trn xung
Vit chng trnh
Th tc getch() c mt k hiu lu vo bin ch


a
A
If ch=a then getch()
Else Error
A; //gi th tc phn tch A
If ch in First(o
1
) then T(o
1
)
Else if ch in First(o
2
) then T(o
2
)
.
Else if ch in First(o
n
) then T(o
n
)
Trang 57
6. Phn tch quy trn xung
Begin T(X
1
); T(X
2
); ... T(X
n
); End;
While ch in First(X) do T(X)
Chng trnh chnh Begin
Getch(); S; {S k t u}
End.
Vit chng trnh
Trang 58
6. Phn tch quy trn xung
V d:
Procedure S
Procedure F;
Procedure B;
Procedure T;
Procedure A;


Trang 59
6. Phn tch quy trn xung
V d:
Procedure S;
Begin
T; A;
End;
Procedure A;
Begin
if ch = + then Begin
getch(); T; A;
End;
End;
Trang 60
6. Phn tch quy trn xung
V d:
Procedure B
Begin
if ch = * then Begin
getch(); F; B;
End;
End;
Procedure T;
Begin
F; B;
End;
Trang 61
6. Phn tch quy trn xung
V d:
Procedure F;
Begin
if ch=( then Begin
getch(); S;
If ch = ) then getch()
Else Error;
End
Else if ch=a then getch()
else Error;
End;

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