Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 54

CHNG 4

PHAN TCH CU PHAP

1
4.1. Vai tro cua bo phan tch cu phap

- Phng phap tong quat: Cocke-Younger-Kasami


va Earley.
- Phan tch t tren xuong.
- Phan tch t di len.

2
4.2. Xay dng van pham cho NNLT
-Loai bo s khong tng minh
stmt if exp then stmt
| if exp then stmt else stmt
| other
Th du: phat bieu: if E1 then if E2 then S1 else S2 la phat
bieu khong tng minh
- Loai bo s khong tng minh.
Quy c hoac sa van pham.
stmt matched-stmt
| unmatched-stmt
matched-stmt if exp then matched-stmt else matched-stmt1
other
unmatched-stmt if exp then stmt
if exp then matched-stmt else unmatched-stmt
3
Loai bo e quay trai
Van pham goi la e quy trai neu ton tai dan xuat.
A A, vi ( Vt Vn)
e quy trai la bao gom e quy trai n gian (trc tiep)
va e quy trai tong quat.
e loai bo e quy n gian, ta se thay the tap luat
sinh:
A A1A Am..n
bang cap luat sinh
A 1A2AnA
A 1AA ..mA
Th du 4.1. Loai bo e quy trai cho van pham:
E E+T T
T T*FF
F (E) id
4
Giai thuat 4.1. Loai bo e quy trai
Nhap: Van pham G khong co vong lap hoi luat sinh
rong.
Xuat : Van pham tng ng G khong co e quy trai.
Phng phap: Ap dung giai thuat mo phong 4.1 cho G.
G khong con e quy trai nhng co the co luat sinh
rong.
Sap xep caucus ky hieu khong ket thuc theo mot th
t nao o: A1, A2, . An .

Mo phong 4.1. Giai thuat loai bo e quy trai t van


pham
for i := 1 to n do
for j := 1 to i - 1 do begin
- Thay cac luat sinh co dang Ai Aj bang cac luat
sinh
Ai ..k
- Vi Aj luat sinh co dang Aj .k
- Loai tat ca ca cac luat sinh co e quy trai trc 5
Th du: Chung ta co ap dung giai thuat 4.1 vao van
pham sau e loai bo e quy trai.
S Aa b A Ac Sd
Tha so trai: Th du ta co hai luat sinh:
stmt if exp then stmt else stmt
if exp then stmt
Ca hai luat sinh eu co if dan au nen ta se khong
biet chon luat sinh nao e trien khai. V the e lam
cham lai quyet nh la chon chung ta se tao ra tha so
trai.
Giai thuat 4.2. Tao van pham co tha so trai
Nhap: cho van pham G.
Xuat: van pham G co tha so trai tng ng.
Phng phap: Tm chuoi dan au chung cua cac ve
phai luat sinh, th du: A ..n . la chuoi
khong bat au bi . Ta thay cac luat tren bang cac
luat AA A n
Th du: Ta ap dung giai thuat tren cho van pham phat
6
4.3. Phan tch cu phap t tren xuo
Phan tch cu phap e quy i xuong.
Phan tch cu phap oan nhan trc.

7
Phan tch cu phap e quy i xuong
Th du: Cho van pham G : S cAd A ab a
S S

c A d c A d

a b
a
a) b)
Hnh 4.4. Cac bc phan tch cu phap t tren xuong

8
2. Phan tch cu phap oan nhan trc
- Hay loai bo e quy trai cho van pham ma chung ta
thiet ke.
- Hay tao van pham co tha so trai neu can thiet.
S o dch cho bo phan tch oan nhan trc
S o nay co ac iem nh sau:
- Moi ky hieu khong ket thuc co mot s o.
- Ten cac canh la token va cac ky hieu khong ket
thuc.
S truyen tren token se c thc hien neu ky hieu
nhap trung vi token o. Neu co s truyen tren ky
hieu khong ket thuc A th ta thc hien mot lenh goi thu
tuc A.

e xay dng s o chung ta se tien hanh cac bc


sau ay:
9
C che hoat ong cua bo phan tch oan nhan
trc
Th du 4.3. Chung ta hay tao s o dch cho van pham
G: E TE
E + TE
T FT
T FT
F (E) id

T E + T E
E: 0 1 2 3 4 5 6

E:
F T
T: 7 8 9

T: 10 11 F 12 T
13 14
(
15
E
16
)
17

F: id

Hnh 4.5. S o dch cua cac ky hieu khong ket thuc


cua G 10
+

T F ( E )
E: 0 3 6 T: 7 10 13 F: 14 15 16 17
id

Hnh 4.6. S o dch cua cac ky hieu khong ket thuc


cua G, a c thu giam
Giai thuat:
procedure E; begin (T}
procedure T; F;
procedure F; while c = * do F;
begin end; T
nextchar (c); begin {E}
if c = ( then begin T;
match ((); E; match ()); end while c = + do T;
else if c = id then match (id) end; E
else error;
end; F

11
3. PTCP oan nhan trc khong e
Cau tao cua bo phan tch cu phap
Stack a 1a 2 a n $ bo em nhap

Xuat
X Chng trnh ieu
khien
Y
Z
$

Bang phan tch M


Hnh 4.7. Mo hnh cau tao cua bo phan tch oan nhan
trc
12
Hoat ong cua bo phan tch
trang thai bat au, stack ch cha cac ky hieu muc
tieu cua van pham nam tren $, tren nh stack. Bang
phan tch M la ma tran. Hai ky hieu X va a se xac nh
hanh vi cua bo phan tch. Bo phan tch co ba hanh vi
nh sau:
1. Neu X = a = $.
2. Neu X = a $.
3. Neu X la ky hieu khong ket thuc.

Giai thuat 4.2. Phan tch cu phap oan nhan trc


khong e quy.
Nhap: chuoi nhap w va bang phan tch M cho van pham
G.
Xuat: neu w thuoc L (G), se tao ra dan xuat trai cua w,
ngc lai se bao loi.
Phng phap: luc au cau hnh cua bo phan tch la ($S,
w$) vi S la ky hieu muc tieu cua G. at ip (la con tro
13
Mo phong 4.2. Chng trnh phan tch cu phap oan
nhan trc
repeat
X tren stack va ky hieu a ang c au oc ip
oc;
if X la ky hieu ket thuc hoac $ then
if X = a then begin
- ay X ra khoi stack;
- dch au oc en ky hieu nhap ke
tiep; end
else error ()
else if M [X, a] = X X1X2Xk then begin
- ay X ra khoi stack;
- ay XkXk-1 X1 len stack (X1 tren nh
stack);
- xuat luat sinh X X1X2 Xk ; end
else error ()
until X = $
14
Chung ta se thc hien loai bo e quy trai, nhan c
G:
E TE E + TE
T FT T FT
F (E) id
Bay gi chung ta se phan tch cu phap cho cau nhap w
= id + id * id bang bang phan tch M cho trc, Bang 4.1.
Bang 4.1. Bang phan tch M cho van pham G
Ky hieu Ky hieu nhap
khong id + * ( ) $
ket thuc
E E TE E TE
E E E E
+TE
T T FT T FT
T T T * FT T T
F F id F (E)

15
Qua trnh phan tch cu phap cau nhap w = id + id id se
c trnh bay bang 4.2.

Bang 4.2. Cac bc phan tch cu phap cau id + id id

Stack Chuoi Xuat Stack Chuoi Xuat


nhap nhap
$E id + id id $ $ETF id id $ T FT
$ET id + id id $ E TE $ETid id id $ F id
$ETF id + id id $ T FT $ET id
$
$ETid id + id id $ F id $ETF id T FT
$
$ET + id id $ $ETF id
$
$E + id id $ T $ETid id F id
$
$ET+ + id id $ E +TE $ET 16
Xay dng bang phan tch M
a. first va follow
first() la tap C ky hieu ket thuc a, dan au cac chuoi
c dan xuat t , a. Neu th thuoc first().
follow(A) la tap cac ky hieu ket thuc a, xuat hien ngay
ben phai A trong dang cau. Nh vay ton tai dan xuat S
Aa. Neu gia A va a ton tai chuoi ky hieu, th no
se dan xuat ra chuoi rong. Neu A tan cung ben
phai cua dang cau th $ thuoc follow(A).
- Cac quy tac tnh first(X) vi X la ky hieu van pham.
- Cac quy tac tnh follow(A) cho tat ca cac ky hieu
khong ket thuc A.

Th du 4.5. Cho van pham G.


E TE E + TE
T FT T FT
F (E)id
17
Toan bo cac ham first va follow cua cac ky hieu van
pham cua G :
first(E) = first(T) = first(F) = (, id
first(E) = +, ; first(T) = *,
follow(E) = follow(E) = $, )
follow(T) = follow(T) = +, $, )
follow(F) = *, +, $, )
b. Xay dng bang phan tch M
Giai thuat 4.3. Xay dng bang phan tch M.
Nhap: van pham G.
Xuat: bang phan tch M.
Phng phap:
1. Vi moi luat sinh A hay thc thi bc 2 va 3.
2. Vi moi ky hieu ket thuc a thuoc first(), them A
vao M[A, a].
3. Neu ky hieu thuoc first(), them A vao M[A, b]
sao cho b thuoc follow(A). Neu $ thuoc follow(A) th them A
vao M [A, $].
18
Van pham LL (1)
Th du 4.7. Cho van pham G.
S iEtSSa ; S eS ; E b

Bang 4.3. Bang phan tch M cho th du 4.7.


Cac Ky hieu nhap
ky
hieu
khong a b e i t $
KT
S Sa S iEtSS
S S S
S eS
E Eb

19
- Van pham khong co phan t nao cua bang phan tch
M co nhieu hn mot tr th c goi la van pham LL (1).
-Van pham LL (1) co cac tnh chat (xem GT).

Khac phuc loi trong phan tch cu phap oan nhan


trc
Loi xuat hien trong cac trng hp sau: Mot la ky hieu
ket thuc tren stack khong trung vi ky hieu nhap ang
c oc. Hai la A la ky hieu khong ket thuc tren nh
stack, a tren chuoi nhap, c oc, ma M [A, a] la trong.
Mot so heuristics c ap dung cho viec khac phuc loi.

Th du 4.8. Cho van pham


E TE ; E + TE ; T FT ; T * FT; F (E)id
first(E) = first(T) = first(F) = (, id)
first(E) = +, ; first (T) = *,
follow(E) = follow(E) = $, )
follow(T) = follow(T) = +, $, )
20
Bang 4.4. Phan tch M co ky hieu khac phuc loi.
Ky Ky hieu nhap
hie
u
khong id + * ( ) $
KT
E E TE E TE synch synch

E E +TE E E
T T FT synch T FT synch synch

T T T * FT T T

F F id synch synch F (E) synch synch


21
4.4. Phan tch cu phap t di len
Phan tch cu phap t di len c hieu la phan tch
ay va thu giam (Shift-Reduce parsing) la phng phap
phan tch LR.

Th du 4.9. Cho van pham G.


S aABe ; A Abcb ; B d
Phan tch cau w = abbcde.
Tom tat cac bc thu giam nh sau:
Qua trnh thu giam neu theo chieu ngc lai th o chnh
la qua trnh dan xuat phai. Qua trnh nay a sinh cay
cu phap cua cau phan tch t di len.

22
Hnh 4.8. Cay cu phap c xay dng t di len cua
cau w = abbcde. 23
Handle
Tm kiem handle
Bat au t chuoi can phan tch w, ta at w = n . n la
dang cau c dan xuat lan th n.

S = 0 1 1 2 2 r -1
n-1n n = w
rm rm rm rm rm

Xay dng dan xuat phai ngc t w = n . Ta tm n trong


n sao cho n la ve phai luat sinh An n . Thay n trong n
bang An , ta nhan c dang cau th (n 1) la n 1.

Qua trnh thu giam c tiep tuc nh vay cho en khi at


c o ch con la mot ky hieu khong ket thuc va la
ky hieu muc tieu.
24
1. Phan tch cu phap th t yeu
Van pham co tnh chat:
van pham th t yeu:
-Khong co luat sinh nao co ve phai la chuoi rong (A
)
-hoac ve phai khong co hai ky hieu khong ket thuc
ng ke nhau

25
Bo phan tch cu phap th t yeu
1. Cau tao

$ X1 X2 Xn-1 Xn Y1 Y2 Yn-1 Yn $

Chng trnh Xuat


phan tch

Bang phan
tch S-R

Hnh 4.9. Mo hnh bo phan tch cu phap th t yeu

26
2. Hoat ong
Th du 4.10. Cho van pham cua phat bieu gan
< assign stmt > id = < exp >
< exp > < exp > + < term > | <term>
< term > < term > * < factor > < factor >
< factor > id (< exp >)
Ky hieu <assign stmt> la ky hieu muc tieu.
W:
id = id + id * id

27
Bang 4.6. Bang phan tch S-R cho van pham th du 4.10.

id + ( ) = $
<assign stmt> R*
<exp> S S R
<term> S R R R
<factor> R R R R
id R R R S R
* S S
+ S S
( S S
) R R R R
= S S
$ S

28
Giai thuat 4.4. Phan tch cu phap th t yeu
Mo phong 4.3. Giai thuat cua chng trnh phan tch th t yeu
Luc au stack trang thai ch co ky hieu $. Stack nhap cha chuoi nhap, c ket
thuc bi dau $ ; c:=false ;
repeat
if Ky hieu muc tieu tren nh va ky hieu $ ay stack trang thai, ong thi
stack nhap ch cha $ then c:=true /phan tch thanh cong, cay cu phap xay dng
xong/
else begin
- X tren nh stack trang thai, Y tren nh stack nhap.
- Gia s T la tr cua phan t S-R [X, Y];
if T la rong then error ()
else if T = R then
if tren nh stack co cha ve phai cua luat sinh nao o
then begin
- Goi A X1 X2 Xn la luat sinh nao co ve phai dai nhat so trung vi
chuoi tren stack trang thai: (a) Giai toa X1 X2 Xn ra khoi stack; (b) Thay A
len stack. (c) Tao nut mi A tren cay cu phap, co cac con la X1 X2 Xn
end
else error ()
else begin // S
(a) Giai toa Y ra khoi stack nhap; (b) ay Y len nh stack trang thai; (c) Tao nut
mi ten Y tren cay cu phap;
end;
end;
until c;

29
3. Xay dng bang phan tch S-R
nh ngha cac quan he < , = , >:
- Chung ta noi X < Y neu va ch neu ton tai mot luat sinh
ma ve phai co dang XA vi A la ky hieu khong ket thuc
va sinh ra mot chuoi bat au bang Y (A Y).
- X > Y neu va ch neu ton tai mot luat sinh ma ve phai
co dang AB. A sinh ra mot chuoi ky hieu c ket thuc
bang X (A X). B sinh ra mot chuoi c bat au bang Y (B
Y), hoac B = Y.
Co hai trng hp xay ra trong qua trnh tm cac moi quan
he cho (X, Y):
Trng hp 1: Y la ky hieu ket thuc
Trng hp 2: Y la ky hieu khong ket thuc.
a. Ton tai $ A vi A la ky hieu muc tieu cua van pham cho
trc.
b. Neu ve phai luat sinh co X nam ke ngay Y ve pha trai
(XY)
th X Y 30
4. Van pham th t yeu
Mot van pham c goi la th t yeu neu thoa cac
ieu kien sau:
1. Khong co hai luat sinh co cung mot ve phai.
2. Khong co phan t S-R [X, Y] nao cua bang S-R
va co tr S va co tr R.
3. Neu ton tai luat sinh AX1 X2 Xn va luat sinh
BXiXi+1 Xn th khong ton tai quan he Xi 1 B.

31
2. Bo phan tch cu phap LR
- Cac tnh chat cua phng phap phan tch LR
- Giai thuat phan tch cu phap LR

1. Bo phan tch cu phap co cau tao nh sau:

a1 a2 ai an $ bo em
nhap
Stack Sm
Xm
Sm 1 Chng trnh xua
ieu khien t
Xm 1

$ action goto bang phan tch

Hnh 4.11. Mo hnh bo phan tch cu phap LR


32
2. Hoat ong
Stack c dung e cha chuoi ky hieu co dang s0 X1 s1
X2 Xm sm. Cap (sm, ai ) se xac nh mot tr c lu
cha trong bang phan tch. Bang phan tch gom hai phan
bieu th bi ham action va goto. Cau hnh (configuration)
cua bo phan tch LR:
s0 X1 s1 Xi si Xm sm, ai ai+1 an $). Cau hnh nay cho
chung ta dang cau X1 X2 Xm ai ai+1 an.

Giai thuat 4.5. Phan tch cu phap LR


Nhap: chuoi nhap w, bang phan tch action goto cua van
pham G.
Xuat: neu w thuoc L (G), no tao ra s phan tch t di
len. Ngc lai, bo phan tch se bao loi.
Phng phap:
- Thi iem ban au stack co trang thai s0.
- Chuoi w$ nam tren bo em nhap.
- Bo phan tch at au oc (con tro ip) vao ky hieu
33
c:=false; /*c la bien luan ly, bao cho biet qua trnh phan
tch ket thuc*/
repeat
- at s la trang thai tren nh stack, a la ky hieu
nhap c ip ch en
if action [s, a] = shift(s) then begin
(a)ay a len stack (b)sau o ay s len nh
stack (c)chuyen ip sang ky hieu nhap ke tiep; end
else if action [s, a] = reduce(A ) then
begin
(a)ay (2*) ky hieu ra khoi stack s la
trang thai tren nh stack
(b)Tm j = goto [s, A]; (c)ay A va sau o la j
len nh stack; (d)xuat luat A
end
else if action [s, a] = accept then c := true
else error ();
until c;
34
Th du 4.12. Cho van pham GTh du: Phan tch cau w = id id + id
(1) E E + T (2) E T (3) T T * F (4) T F
(5) F (E) (6) F id
Bang 4.8. Bang phan tch cho van pham G th du 4.12.
action goto
Trang thai
id + * ( ) $ E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
7 s5 s4 10
8 s6 s11 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
35
Van pham LR
Xay dng bang phan tch SLR
nh ngha thc the LR (0)
Th du: G co luat sinh A XYZ, se cho bon thc the:
AXYZ; AXYZ; AXYZ; AXYZ
Neu A se cho ta thc the A
Y tng c ban cua giai thuat xay dng bang phan
tch SLR la t van pham, chung ta i tm DFA, nhan dang
chuoi dan au ben trai cua dang cau (viable prefixe).
nh ngha van pham gia to: neu G la van pham, th G
la van pham gia to, la G co S la ky hieu muc tieu va
co them luat sinh
S S.
Phep bao ong Closure.
Giai thuat tnh closure.

36
Mo phong 4.4. Giai thuat tnh ham closure
function closure (| : item) : item;
begin J := |;
repeat
for vi moi thc the A .B trong J va
vi moi
luat sinh
B trong G sao cho
thc the B . cha co trong J do
them B . vao J;
until khong the them thc the mi vao J;

closure := J;
end;
Giai thuat tnh goto: ham goto (I, X) vi I la tap cac thc
the, X la ky hieu van pham. Goto (I, X) la closure cua
tap cac thc the co dang 37
Mo phong 4.5. Giai thuat tnh tap tuyen cac tap thc
the
procedure items (G);
begin
C := closure (S S
repeat
for vi moi tap thc the I trong C va
vi moi ky hieu van pham X sao cho phep goto (I, X)
khong rong va khong co trong C do
them goto (I, X) vao C;
until khong the them tap thc the mi
vao C;
end;

Th du 4.13. Cho van pham gia to G


E E ; E E + T ; E T
T T* F ; T F ; F (E) ; F id
Hay tm tap C va s o DFA. 38
Giai thuat 4.6. Xay dng bang phan tch
Nhap: van pham gia to G
Xuat: bang phan tch SLR vi ham action va goto cho
van pham G
Phng phap:
(1). Xay dng C = Io, I1, In.
(2). i la trang thai ai dien cho tap thc the Ii.
(a). Neu A a la thc the trong Ii va goto (Ii, a) = Ij
th phan t action [i, a] = shift(j), vi a phai la ky hieu ket
thuc.
(b). Neu A trong Ii th action [i, a] = reduce(A ) vi
a la tat ca cac ky hieu nam trong follow (A). A khong
phai la S (ky hieu muc tieu mi).
(c). Neu S S trong Ii th action [i, $] = accept.
(3). Cho tat ca cac ky hieu khong ket thuc A. Neu goto
[Ii, A]=Ij th ham goto [i, A]=j.
(4). Tat ca cac phan t cua bang phan tch khong
c xac nh bang quy tac 2 va 3, chung ta coi la
39
Th du 4.14. Xay dng bang phan tch SLR cho van pham
G th du 4.13.
Th du 4.15. Cho van pham G.
(1) S L = R (2) S R
(3) L * R (4) L id
(5) R L
Ta nhan thay ung o khi action [2, =] = s6 ong thi action
[2, =] = r5 va action [2, $] = r5. Do o tai phan t action [2, =]
co hai tr s6 va r5. Nh vay G khong phai la van pham
SLR.

Xay dng bang phan tch Canonical LR


Dang tong quat cua thc the la [A ., a] vi A
la luat sinh va a la ky hieu ket thuc hoac dau $. Thc
the co dang nh the c goi la thc the LR (1). Neu
= th thc the se co dang [A , a]. Luc nay chung
ta thc hien thu giam bang luat sinh A ch vi ieu
kien ky hieu nhap ke tiep la a.
40
Chung ta noi thc the LR (1) [A ., a] la hp le vi
chuoi ky hieu dan au dang cau neu ton tai
dan xuat phai:
S Aw w vi
rm rm
1. = va
2. hoac a la ky hieu dan au cua w, hoac w =
th a la $.

Th du 4.16. Cho van pham G


S BB
B aB b

Tnh tap tuyen cac thc the LR (1)


Phep tnh closure
Giai thuat 4.7. Xay dng cac tap thc the LR (1).

41
Mo phong 4.7. Giai thuat tnh cac tap thc the LR (1)
cho VPGT G
function closure (I: items): items;
begin
repeat
for vi moi thc the [A B, a] trong I, vi moi
luat sinh B trong G va vi moi ky
hieu ket thuc b thuoc first sao cho thc the [B
, b] khong co trong I do
them thc the [B , b] vao I
until khong the them thc the mi vao I;
closure := I;
end;
function goto (I :items; X: symbol): items;
begin
J la tap cac thc the co dang [A X, a] sao cho
thc the [A X, a] trong I ; goto := closure
(J); 42
procedure items (G);
begin
d := closure (S S, $;
repeat
for vi moi tap thc the I trong C va
vi moi ky hieu van pham X sao cho goto
(I, X) khong rong va cha co trong C do them
goto (I, X) vao C;
until khong the them tap thc the mi vao
C;
end;

Th du 4.17. Xay dng cac tap thc the LR (1) cho van
pham gia to G: S .S ; S CC ; C cCd

43
GT 4.8. Xay dng BPT Canonical LR.
Nhap: van pham gia to G
Xuat: bang phan tch Canonical LR vi hai ham action va goto
cho G
Phng phap:
(1). Xay dng C = Io, I1, , In.
(2). Trang thai i ai dien cho Ii.
(a). Neu thc the [A .a, b] trong Ii va goto (Ii , a) = Ij th
phan t action [i, a] = shift(j), a phai la ky hieu ket thuc.
(b). Neu [A , a] trong Ii, A S th action[i, a]=reduce(A)
(c). Neu [S S , $] trong Ii th action [i, $] = accept.
(3). Neu goto (Ii , A) = Ij th phan t goto [i, A] = j.
(4). Tat ca cac phan t khong ap dung c quy tac 2 va 3
th la loi.
(5). Trang thai bat au cua bo phan tch cu phap la tap
thc the co
cha thc the [S S , $].
44
Bang 4.10. Bang phan tch Canonical LR
action goto
Trang thai
c d $ S C
0 s3 s4 1 2
1 acc
2 s6 s7 5
3 s3 s4 8
4 r3 r3
5 r1
6 s6 s7 9
7 r3
8 r2 r2
9 r2

45
Bo sinh phan tch cu phap
Bo sinh phan tch cu phap Yacc
y.tab.c
Tap tin ac ta Trnh bien dch
Yacc translate.y Yacc

y.tab.c Trnh bien dch a.out


C

chuoi dan xuat


token a.out

Hnh 4.14. Tao bo phan tch cu phap bang Yacc.

46
Th du 4.23. Chung ta se tao tap tin ac ta van pham
cho Yacc cua van pham G.
EE+TT
TT*FF
F (E) digit
Mo phong 4.10. Tap tin ac ta van pham cho Yacc th
du 4.23.
% # include <ctype.h>
%
% token DIGIT
%%
line : exp \nprintf (% d\n, $1) ;
;
exp : exp + term $$ = $1 + $3;
: term
;
term : term * factor $$ = $1 + $3;
: factor
47
factor : (exp) $$ = $2;
: DIGIT
;
%%
yylex ( )
int c ;
c = getchar ( ) ;
if (isdigit (c)) yylval = c - 0 ;
return DIGIT;

return c;

48
Phan ac ta
Phan cac luat bien dch:
<ve trai luat sinh> <ve phai th nhat> | | <ve
phai th n>

Luat bien dch trong Yacc:


<ve trai LS> : <ve phai 1> hanh vi ng ngha
1
: <ve phai 2> hanh vi ng ngha 2

: <ve phai n> hanh vi ng ngha n
Phan cac chng trnh con C phu tr

49
Mt vn phm phi ng cnh G tha dng chun
Thuat toan Chomsky (Noam Chomsky ) nu mi lut sinh
COCKE-YOUNGER-KASAMI
c dng ABC hay Aa (vi A, B, C l k
hiu khng kt thc; cn a l k hiu kt thc)
Y tng chnh cua thuat toan nay la da tren thuat
toan quy hoach ong (dynamic programming) e thc
hien viec xay dng bang phan tch va t o thc
hien viec phan tch chuoi nhap.

Thuat toan nay lam viec nh mo ta sau:


Cho van pham G=(N, , P, S) la dang van pham phi
ng canh, thoa man dang chuan Chomsky va
khong co luat sinh rong (dang A) nao.
Vi chuoi nhap w=a1a2an, trong o ai vi i
1..n:
-viec thc hien phan tch w c da tren bang
phan tch T (ti,j) ma trong o ky hieu khong ket
thuc A se nam trong tij neu va ch neu ton tai A
aiai+1ai+j-1. 50
CYK (tt)
Thuat toan Cocke-Younger-Kasami:
Nhap:
- Van pham phi ng canh G=(N, , P, S) thoa
man dang chuan Chomsky va khong co luat sinh
rong nao.
- Chuoi nhap w= a1a2an thuoc +
Xuat: Bang phan tch T cho chuoi nhap w ma ti,j cha
A neu va ch neu Aaiai+1ai+j-1
Phng phap:
(1) at ti,1={A | A->ai la luat sinh trong P} vi moi i, i
1..n
(2) Gia s rang ti,j c tnh cho tat ca i, vi 1 i n
va tat ca j vi 1 j i. at ti,j = {A | vi cac gia tr k
ma 1 k j va ABC la luat sinh trong P, ma B thuoc
ti,k , C thuoc ti+k, j-k }
51
CYK (tt)
V du: Cho van pham G co tap luat sinh nh sau:
S AA | AS | b va A SA | AS | a
Va chuoi nhap w=abaab
Da theo giai thuat va neu, ta xay dng c bang
phan tch T nh sau:
5 A,S Sau khi phan tch,
4 A,S A,S ta thay S thuoc
t1,5, do o qua
3 A,S S A,S trnh phan tch
2 A,S A S A,S thanh cong

j 1 A S A A S

i 1 2 3 4 5

52
CYK (tt)
nh ly:
Neu thuat toan va neu c ap dung cho van
pham G co dang CNF va chuoi nhap w=a1a2an th
en khi ket thuc, A thuoc ti,j neu va ch neu
A=>aiai+j-1

53
BI TP CHNG 4
4.1 Hy xy dng b phn tch c php on nhn trc cho vn phm
sau.
bexp bexp or bterm bterm
bterm bterm and bfactor bfactor
bfactor not bfactor (bexp) true false

4.2 Cho vn phm G


E E + TT
T TFF
F F*ab
Hy xy dng bng phn tch SLR cho G

54

You might also like