21/1/2010
1
Bài 8.
Vănphm LL(k)
Văn
phm
LL(k)
Phân cp các ngôn ng phi ng cnh
Ngôn ng LL(k)
Xem trước k ký hiu trên xâu vào để quyết
định sn xut được s dng
Đượcsinhranhvănphm LL(k)
Được
sinh
ra
nh
văn
phm
LL(k)
FIRSTk(α)
Định nghĩa:Cho vănphm G phi ngcnh, s
nguyên dươngk,alàmtxâubaogmký
hiu
kết
thúc
không
kết
thúc
hiu
kết
thúc
không
kết
thúc
FIRSTk(
α
)làtpcácxâu xgmkkýhiukết
thúc trái nhtcacácxâusuydnt
α
(Kc
trường hpxkhôngcóđủ kký hiunhưng
α
suy dn ra x , không còn hiu nào sau x)
21/1/2010
2
FIRSTk(α)
Định nghĩa:Cho vănphmG=(Σ, Δ,P,S),s
nguyên
dươn
k,α∈V*
FIRSTk(α)={x∈Σ*|αxβ |x| = k hocαxvà
|x| < k}
(Tpcácxâu x
∈Σ
*cókkýhiutráinhtsuydn
t
α
(Kctrường hpxkhôngcóđủ kký hiu
nhưng
α
x , không còn hiu nào sau x))
FOLLOWk(α)
kkýhiukết thúc đầu tiên tiếpsauxâuđược
suy dnt
α
.
Đặcbit , khi A hiu không kếtthúc,S
suy dn ra bA thì FOLLOW1(A) ={ε}
FOLLOWk(α)
FOLLOWk(α)={x∈Σ*|S *βαδ xFIRSTk(δ)}
Đặ
bit
khi
A
Δ
*
S
*
β
A
thì
Đặ
c
bit
,
khi
α=
A
Δ
*
,
S
*
β
A
thì
FOLLOW1(A) ={ε}
Văn phm LL(k)
Định nghĩavănphm phi ngcnh G = (Σ,
Δ,P,S) làLL(k) vikchotrướcnếuvi
m
ic
p
su
y
dntrái
p
y
S=>xAα=> xβ1α=> xZ1
S=>xAα=> xβ2α=> xZ2
NếuFIRST
k(Z1)=FIRST
k(Z2)thìβ1=β2
21/1/2010
3
Ví d
VănphmGvicácsnxut:
SaAS | b
A
bSA
|
a
A
bSA
|
a
LL(1)
Văn phm LL(1) đơn gin
VănphmG=(Σ, Δ, P, S) LL(1) đơnginnếu
misnxutcavănphmcódng
Aa1α1|a
2α2|....a
nα, ai∈Σ1in
Trong đóa
iajviij
Điu kin nhn biết văn phm LL(1)
Định VănphmG=(Σ, Δ, P, S) LL(1) khi
chkhi mitpA-snxut trong P dng
A
→α
1
|
α
2
|
....
|
α
n
,
n2thomãn
1
|
2
|
|
n
,
FIRST1(αi)FIRST1(αj)=
Nếuαi*εthì
FIRST1(αi)FOLLOW1(A) =,ij
Điu kin LL(1) trên sơ đồ cú pháp
mi li r, các nhánh phi bt đầu bng
các ký hiu khác nhau
Nếubiuđồ chamtđường rng thì
Nếu
biu
đồ
cha
mt
đường
rng
thì
mi ký hiu đứng sau ký hiu được biu
din bi biu đồ phi khác các ký hiu
đứng đầu các nhánh ca sơ đồ
21/1/2010
4
A FIRST(A) FOLLOW(A)
Block CONST, VAR,TYPE,
PROCEDURE,BEGIN
.,;
Unsignedconst ident, number,’
Constant +,-,’,ident,number
T
id t i t h
Văn phm KPL là LL(1)
T
ype
id
en
t
,
i
n
t
eger, c
h
ar,arra
y
Statement ident, CALL, BEGIN,
WHILE,FOR
.,;, END
Expression +,-,(,ident,number .,;, END,TO,THEN,DO,),-
,.),<,<=,>,>=,=,!=
Term ident,number, ( .,;,END,TO,THEN,DO,),-
,<,<=,>,>=,=,!=
Factor ident, number, ( .,;,END,TO,THEN, DO, +, -,
*,/,) ,<,<=,>,>=,=,!=