21/1/2010
1
Bài 6
Phân tích cú pháp
óli
1
t
r
ê
n xu
ng c
ó
quay
l
u
i
Bài toán phân tích cú pháp
Bài toán đặt ra
Cho văn phm phi ng cnh G và xâu w
L(G) đúh i?
2
w
L(G)
đú
ng
h
ay sa
i?
Phân tích trên xung (top down)
S * w?
w đúng cú pháp cây cú pháp
E -> E + T
E -> T
T
>T
*
F
3
T
-
>
T
F
T -> F
F -> ( E )
F -> ident
Biu din cây cú pháp bng cách nào?
Phân tích trái
Phân tích trái caα dãy các snxut
được
s
dng
suy
dn
trái
ra
α
t
S
4
được
s
dng
suy
dn
trái
ra
α
t
S
Phân tích danh sách các st1đếnp
21/1/2010
2
Ví d
Xét văn phm G, các sn xut được đánh s
như sau
1.E T+E
2.E T
5
3.T F* T
4.T F
5.F (E)
6.F a
Phân tích trái ca xâu a*(a+a) là 23645124646
Gii thut phân tích top down quay lui
Tưtưởng chyếucagiithutlàxây
dngcâyphântíchcúpháp(câysuydn)
cho xâu w
6
Đánh sthtcác snxut cùng vế
phi, nhưvy, các A - snxutcavăn
phmsẽđưcxếptht
A→α12|....n
Mô t gii thut
Btđầutnút gcS
Nút S được coi nút hotđộng
7
To ra các nút con mtcáchđệ quy
Nút hot động là ký hiu
không kết thúc A
ChnvếphiđầutiêncaA-snxut:X
1X2....X
k.
To k nút con trctiếpcaAvi nhãn X1,X
2,....X
k.
Nút
hot
động
nút
nhãn
X
1
8
Nút
hot
động
nút
nhãn
X
1
.
Nếuk=0,(snxutA→ε) thì nút hotđộng s nút
bên phi (ngay sau) A khi duyt cây theo thttrái
21/1/2010
3
Nút được xét có nhãn là ký hiu
kết thúc a
So sánh vikýhiuđang xét.
Nếu trùng vikýhiuđang xét thì chuynđầu
đọc sang phi 1 ô, chuyn sang xét nút bên phi.
Nếu
a
không
trùng
vi
hiu
đang
xét
thì
quay
9
Nếu
a
không
trùng
vi
hiu
đang
xét
thì
quay
lui ti nút tiđóđãsdng snxuttrước
(Thay thếmtkýhiu không kết thúc (chng hn
A) bng vếphimtsnxut).
Chuynđầuđọc sang trái (nếucn) thvila
chntiếp theo. Nếu không còn lachn nào khác
thì quay lui tibướctrướcđó
NếuđãquayluitiSvàkhôngcònlachn
khác:câu sai pháp
Điu kin để thc hin gii thut
Văn
phm
G
cn
tho
điu
kin
1 0
Văn
phm
G
cn
tho
điu
kin
không đệ quy trái để tránh rơivào
chu trình
Ví d
Cho văn phm
S
aSb | c
Các snxutsđượcđánh st1đến2
1 1
Các
sn
xut
s
được
đánh
s
t
1
đến
2
.
Xét xâu vào aacbb
Dng cây phân tích cú pháp
1 2
21/1/2010
4
Th la chn khác
1 3
Gii thut phân tích cú pháp quay lui
Vào
Văn phm G phi ng cnh không đệ quy trái,
xâu w = a1. . . .an, n 0
Các sn xut ca G được đánh s 1,. . . . q
Ra
Mthâtíhtáih (ếó)
1 4
Mt
p
n
c
h
t
r
ái
c
h
o w
(
n
ế
u c
ó)
Thông báo li nếu ngược li
Phương pháp
(Xây dng 2 stack D1và D2.
D
2
biu din d
n
g
câu trái hi
n t
i có đư
c bn
g
1 5
g g
cách thay thế các ký hiu không kết thúc bi vế
phi tương ng
D1 ghi li lch s nhng la chn đã s dng và
nhng ký hiu vào trên đó đầu đọc đã đổi v trí
(1)
A N , gi s có các A-sn xut
A →α1 | α2| . . . .| αn
Coi các snxuttrênlà
1 6
Coi
các
sn
xut
trên
A1→α1
. . . .
An→αn
21/1/2010
5
Hình trng ca gii thut
Bbn(s,i,α, β)
sQ: Trng thái hinthi
q: Trng thái bình thường
b
Q
li
1 7
b
:
Q
ua
y
l
u
i
t: Kết thúc
i:Vtrí đầuđọc(Băng vào duhiukết thúc #)
α:Ni dung stack thnht
β:Ni dung stack thhai
Thc hin gii thut
Btđầuthình trng đầu, tính liên tiếp
các hình trng tiếp theo cho đếnkhi
khôn
g
tính đư
cna.
1 8
g
Nếuhìnhtrng cui (t,n+1,γ,ε), đưa
ra h(γ)vàdng. Ngượcliđưa ra thông
báo sai
Ví d
Xét xâu vào aacbb và văn phm G vi
các sn xut
1 9
S aSb
S c
Đánh s li các sn xut
1. S1aSb
2
S
c
2 0
2
.
S
2
c