Định nghĩa:Cho vănphạm G phi ngữcảnh, số
nguyên dươngk,alàmộtxâu baogồmký
hiệukếtthúcvàkhôngkếtthúc hiệukếtthúcvàkhôngkếtthúc
FIRSTk(α)làtậpcácxâu xgồmkkýhiệukết
thúc trái nhấtcủacácxâusuy dẫntừα(Kểcả
trường hợpxkhôngcóđủkký hiệunhưngα
suy dẫn ra x , không còn ký hiệu nào sau x
4 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1297 | Lượt tải: 0
Nội dung tài liệu Kĩ thuật lập trình - Bài 8. Văn phạm LL (k), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
21/1/2010
1
Bài 8.
Văn phạm LL(k)
Phân cấp các ngôn ngữ phi ngữ cảnh
Ngôn ngữ LL(k)
Xem trước k ký hiệu trên xâu vào để quyết
định sản xuất được sử dụng
Được sinh ra nhờ văn phạm LL(k)
FIRSTk(α)
Định nghĩa : Cho văn phạm G phi ngữ cảnh, số
nguyên dương k , a là một xâu bao gồm ký
hiệu kết thúc và không kết thúc
FIRSTk(α) là tập các xâu x gồm k ký hiệu kết
thúc trái nhất của các xâu suy dẫn từ α (Kể cả
trường hợp x không có đủ k ký hiệu nhưng α
suy dẫn ra x , không còn ký hiệu nào sau x)
21/1/2010
2
FIRSTk(α)
Định nghĩa : Cho văn phạm G = (Σ, Δ, P, S), số
nguyên
dương k , α ∈ V*
FIRSTk(α) = { x ∈ Σ* | α xβ và |x| = k hoặc α x và
|x| < k}
( Tập các xâu x ∈Σ* có k ký hiệu trái nhất suy dẫn
từ α ( Kể cả trường hợp x không có đủ k ký hiệu
nhưng α x , không còn ký hiệu nào sau x))
FOLLOWk(α)
k ký hiệu kết thúc đầu tiên tiếp sau xâu được
suy dẫn từ α.
Đặc biệt , khi A là ký hiệu không kết thúc, S
suy dẫn ra bA thì FOLLOW1(A) ={ε}
FOLLOWk(α)
FOLLOWk(α) = {x ∈ Σ* | S ⇒* βαδ và x∈ FIRSTk(δ)}
Đặ biệt khi A Δ* S * βA thìc , α = ∈ , ⇒
FOLLOW1(A) ={ε}
Văn phạm LL(k)
Định nghĩa văn phạm phi ngữ cảnh G = (Σ,
Δ, P, S) là LL(k) với k cho trước nếu với
mọi cặp suy dẫn trái
S => xAα => xβ1α => xZ1
S => xAα => xβ2α => xZ2
Nếu FIRSTk(Z1) = FIRSTk(Z2) thì β1 = β2
21/1/2010
3
Ví dụ
Văn phạm G với các sản xuất :
S → aAS | b
A → bSA | a
là LL(1)
Văn phạm LL(1) đơn giản
Văn phạm G = (Σ, Δ, P, S) là LL(1) đơn giản nếu
mọi sản xuất của văn phạm có dạng
A → a1α1 | a2α2 |. . . . anα, ai ∈ Σ 1≤ i ≤ n
Trong đó ai ≠ aj với i ≠ j
Điều kiện nhận biết văn phạm LL(1)
Định lý Văn phạm G = (Σ, Δ, P, S) là LL(1) khi
và chỉ khi mọi tập A- sản xuất trong P có dạng
A → α1 | α2 | . . . . | αn , n ≥ 2 thoả mãn
FIRST1(αi) ∩ FIRST1(αj) = ∅
Nếu αi ⇒ * ε thì
FIRST1(αi) ∩ FOLLOW1(A) =∅ , i ≠ j
Điều kiện LL(1) trên sơ đồ cú pháp
Ở mỗi lối rẽ, các nhánh phải bắt đầu bằng
các ký hiệu khác nhau
Nếu biểu đồ có chứa một đường rỗng thì
mọi ký hiệu đứng sau ký hiệu được biểu
diễn bởi biểu đồ phải khác các ký hiệu
đứng đầu các nhánh của 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 phạm KPL là LL(1)
ype en , n eger, c ar,array
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, +, -,
*,/,) ,,>=,=,!=
Các file đính kèm theo tài liệu này:
- unit8_compatibility_mode__8651.pdf