• Tập các quy tắc sinh sản xuất của VPPNC và VPCQ đều có dạng vế trái là một ký tự đơn không kết thúc... Các ký tự không kết thúc đưa vào trong dấu ; • Dạng biên dịch diễn tả cú pháp của
Trang 1Chương 3
ÔTÔMÁT ĐẨY XUỐNG
I Văn phạm phi ngữ cảnh và cây dẫn xuất đầy đủ
Trang 2I.VĂN PHẠM PHI NGỮ CẢNH &
CÂY DẪN XUẤT ĐẦY ĐỦ (CÂY CÚ PHÁP)
• 1 Quy ước
• Trong văn phạm G=<T,N,I,R> quy ước:
• Mỗi ký hiệu trong T –ký tự thường a,b,c (có thể cả chỉ số)
• Mỗi ký tự trong N- ký tự viết hoa A,B,C …(có thể cả chỉ số)
• Ký tự X,Y,Z (có thể cả chỉ số) chỉ ký tự ∈V=T ∪ N hay
X,Y,Z, Có thể là ký tự kết thúc của T và cũng có thể là ký tự chưa kết thúc thuộc N
• Mỗi ký tự viết thường ω, u, v, w, x, y, z, (có thể chỉ số) là các xâu trong T*
• Các ký hiệu θ, α, β, γ …chỉ các xâu trong V* kể cả xâu rỗng λ
2
Trang 3I.VĂN PHẠM PHI NGỮ CẢNH &
CÂY DẪN XUẤT ĐẦY ĐỦ (CÂY CÚ PHÁP)
2 Định nghĩa VPPNC
Văn phạm G=<T,N,S,P> là VPPNC khi và chỉ khi có tập sản xuất (tập quy tắc)
P={A→θ | A∈N, θ∈ V*}
3 Cây dẫn xuất đầy đủ (Cây cú pháp) của xâu trong G.
Giả sử ω∈ L(G), có dẫn xuất đầy đủ trong G hay có S | ω Cây này được tạo ra theo nguyên tắc sau:
Đỉnh gốc của cây được gán nhãn:
Đỉnh trong của cây được gán nhãn A ∈N:
Đỉnh ngoài (lá) được gán nhãn a∈T∪λ:
3
S
A a
Trang 4I.VĂN PHẠM PHI NGỮ CẢNH &
CÂY DẪN XUẤT ĐẦY ĐỦ (CÂY CÚ PHÁP)
• Nếu đỉnh n được gán nhãn A, các đỉnh con của nó được gán
X1, X2, , Xk thì có sản xuất
• A→ X1, X2, , Xk ∈ P
• Đọc lần lượt nhãn của các lá từ trái sang phải thì xâu nhận
được phải là xâu ω
• Ví dụ
4
Trang 5II.VĂN PHẠM PHI NGỮ CẢNH CHUẨN
Trang 6II.VĂN PHẠM PHI NGỮ CẢNH CHUẨN
• Ví dụ 1 Cho văn phạm G=<T,N,S,P> trong đó T={a,b}, N={S,A}, P={S→ aAS, S→a, A→SbA, A→SS, A→ba}
• Xây dựng VPPNC chuẩn G1=<T,N1,S,P1} tương đương với G
• Trước tiên xây dựng G’=<T, N’,S,P’> với
,SS,
,,
'
,,,,'
Trang 7II.VĂN PHẠM PHI NGỮ CẢNH CHUẨN
• G1=<T,N1,S,P1> có:
• T={a,b},
• Khi đó G1 là VPPNC chuẩn có L(G1) = L(G’) = L(G);
Ví dụ 2 Văn phạm G=<T,N,S,P} với T={a,b}, N={S,A,B};
P’={S → bA, S → aB, A → bAA, A → aS, A → a, B → aBB, B → bS, B → b }
• Hãy xây dựng VPPNC chuẩn
, , a A,
Trang 8II.VĂN PHẠM PHI NGỮ CẢNH CHUẨN
b , a {
N = =
},
,
,,
AA,B,
aS
A,{S
'
b B
S b B
BB a B
a A
S a A
b A
Trang 9II.VĂN PHẠM PHI NGỮ CẢNH CHUẨN
,,
,,
,,
,,
,,
b{S
2 2
1 1 1
b b
a a
b B
S b B
BB F
F a B
a A
S a
A
AA F
F a A
B a S
Trang 10III DẠNG BIÊN DỊCH BNF(BACKUS NAUR)
• 1 Quy ước của dạng biên dịch BNF
• 2 Dạng biên dịch BNF của văn phạm phi ngữ cảnh
• Các ngôn ngữ lập trình đều có cú pháp của VPPNC Có cách biểu diễn mới của VPPNC
• Tập các quy tắc sinh (sản xuất) của VPPNC và VPCQ đều có dạng vế trái là một ký tự đơn không kết thúc
10
Trang 11III DẠNG BIÊN DỊCH BNF(BACKUS NAUR)
• Vì vậy gộp tất các xâu ở vế phải thành một mệnh đề ngăn cách giữa chúng bởi một vạch đứng Ký hiệu → được thay bằng := Các ký tự không kết thúc đưa vào trong dấu <>;
• Dạng biên dịch diễn tả cú pháp của ngôn ngữ lập trình
• Ví dụ 1 Viết dạng BNF của VPPNC cho tập con của tiếng
Trang 12III DẠNG BIÊN DỊCH BNF(BACKUS NAUR)
• <danh từ>::= rabbit | mathematician
Trang 13III DẠNG BIÊN DỊCH BNF(BACKUS NAUR)
• Ví dụ 3 Viết VPPNC G=<T,N,S,P} sinh ra số nguyên có dấu
• T={+,-,0,1,2,3,4,5,6,7,8,9}
• N={S,A,B,C}: S=“sốnguyêncódấu”, A=“dấu”, B=“sốnguyên”, C=“chữsố”;
• P={songuyencodau →dau songuyen, dau→+, dau→-,
songuyen→chuso, songuyen→chuso songuyen, chuso→0,
chuso→1, ,chuso→9} hay
C
Trang 14III DẠNG BIÊN DỊCH BNF(BACKUS NAUR)
14
Trang 15IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• 1 Định nghĩa PA
PA={T, Γ, Q,F, q0, $, f} là một bộ gồm:
Σ -tập hữu hạn không rỗng các ký tự vào;
Q- tập không rỗng các trạng thái, q0 là trạng thái ban đầu
Γ -Stack - tập không rỗng các ký tự thuộc V=T ∪N trong
VPPNC, Γ chứa $ -đáy ngăn xếp;
F ⊆ Q -tập các trạng thái kết thúc của PA
f : Γ* × Q ×(Σ ∪λ) → 2Γ * × Q –hàm chuyển của PA
15
Trang 16IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• Hình trạng tức thời của PA
Trang 17IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• 2 Ngôn ngữ đoán nhận của PA.
• Hình trạng tức thời của PA phụ thuộc 3 yếu tố:
Xâu đầu vào x (quy ước ký tự bên trái của xâu x sẽ được đọc tiếp)
Trạng thái q∈Q;
Xâu α ∈ Γ* trong đó ký hiệu bên trái của αnằm ở đáy
Stack, còn ký hiệu bên phải của α nằm ở đỉnh của Stack
Ký hiệu hình trạng tức thời của PA là bộ ba (α, q, x)
• Hình trạng ban đầu ($,q0,ω$); Stack rỗng, trạng thái ban đầu
q0, băng vào đặt xâu ω$
17
Trang 18IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• Hình trạng kết thúc có 2 loại:
Hình trạng kết thúc theo tập trạng thái kết thúc (α, q, $), Stack vẫn chứa α, trạng thái q ∈F, và xâu ω đã đọc xong ($,q0,ω$) |- (α,q,$) (q ∈F)
Hình trạng kết thúc theo Stack rỗng ($,q,$) Stack rỗng, xâu
Trang 19IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• Một số kết quả chính:
• Định lý 1: L (PA) = L(PA) đối với mỗi Ô tô mát đẩy xuống
PA Hay đối với ô tô mát đẩy xuống thì sự đoán nhận ngôn
ngữ theo tập trạng thái kết thúc hay theo Stack rỗng là tương đương nhau
Trang 20IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
Ví dụ 1
• Cho VPPNC G=<T,N,S,P> với T= {0,1,x }; N= {S };
P= {S→0S0, S →1S1, S→ x };
có L(G)= {ωx[ω] | ω∈ {0,1}và [ω] ảnh gương của ω} là NNPNC Hãy xây dựng ô tô mát đẩy xuống (PA) đơn định:
M={T, Γ,Q,q0, $,f}
Sao cho L (PA) = L(PA) (đoán nhận theo stack rỗng)
Bài giải.
T={0,1,x}; Γ={S,0,1,x}; Q={q0,q1}, F=φ; $ - đáy stack và là ký hiệu đọc hết xâu
20
Trang 21IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
• Hàm chuyển trạng thái f: Γ* ×Q × { T ∪λ } → Γ*×Q làm
việc theo nguyên tắc sau:
Thời điểm ban đầu stack rỗng, trạng thái ban đầu q0, xâu dạng
ω $ trên băng làm việc;
Nếu q0, gặp ký tự vào a ∈ {0,1} thì trạng thái vẫn là q0, đưa a vào stack, đầu đọc dịch một ô sang phải.
Nếu q0 gặp ký tự đầu vào x thì chuyển sang trạng thái q1, (ko đưa vào stack), đầu đọc dịch sang phải một ô.
Nếu q1 gặp ký tự đầu vào a ∈ {0,1} thì so sánh với đỉnh stack:
Nếu a trùng ký tự ở đỉnh của stack thì đưa ký tự ở đỉnh stack
ra ngoài, đầu đọc dịch một ô sang phải, trạng thái vẫn là q1.
N ếu a khác ký tự trên đỉnh của Stack thì M không đoán nhận xâu đầu vào.
21
Trang 22IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
• Ô tô mat này chỉ đoán nhận xâu ωx[ω] khi và chỉ khi đầu đọc chỉ vào ký hiệu hết xâu $ trên băng làm việc và stack rỗng, tức
Trang 23IV Ô TÔ MÁT ĐẨY XUỐNG VÀ NGÔN NGỮ ĐOÁN NHẬN CỦA NÓ
• Ví dụ 2 Cho VPPNC G=<T,N,S,P} với T={0,1}, N={S}, và
• P={S→0S0, S→1S1, S→λ}
• Xây dựng ô tô mat đẩy xuống không đơn định
• M=<T, Q,Γ,F,q0,$, f> sao cho L (M)=L(G) (theo stack rỗng)
• Giải
• NNPNC do G sinh ra là
• L(G)={ω[ω] | ω∈{0,1}*, [ω] ảnh gương của ω} (cm?);
• Ta xây dựng ô tô mat M=<T,Q,Γ,F,q0,$,f> với:
• T={0,1}, Q={q0,q1}, q0- trạng thái ban đầu,
∀ Γ={S,0,1,$}, $: ký hiệu kết thúc xâu,
23
Trang 24IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
• F=φ (do M đoán nhận theo stack rỗng)
• Hàm chuyển f: Γ*×Q×(T∪{λ}) →2 Γ * × Q làm việc như sau:
Trang 25IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
• Chú ý: Từ 1-6 cho phép M nhớ các ký hiệu đã đọc Bước 3
và bước 6 cho phép M chọn giữa hình trạng , nó chọn … khi đọc xong xâu ω trên băng làm việc …
Trang 26IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
26
Trang 27IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
27
Trang 28IV Ô TÔ MÁT ĐẨY XUỐNG VÀ …
28