Professional Documents
Culture Documents
Chöông 4: Phaân Tích Cuù Phaùp
Chöông 4: Phaân Tích Cuù Phaùp
1
4.1. Vai tro cua bo phan tch cu phap
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 .
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.
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
T F ( E )
E: 0 3 6 T: 7 10 13 F: 14 15 16 17
id
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
$
15
Qua trnh phan tch cu phap cau nhap w = id + id id se
c trnh bay bang 4.2.
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).
E E +TE E E
T T FT synch T FT synch synch
T T T * FT T T
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
25
Bo phan tch cu phap th t yeu
1. Cau tao
$ X1 X2 Xn-1 Xn Y1 Y2 Yn-1 Yn $
Bang phan
tch S-R
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
a1 a2 ai an $ bo em
nhap
Stack Sm
Xm
Sm 1 Chng trnh xua
ieu khien t
Xm 1
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;
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
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>
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.
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
54