Bài giảng Xây dựng chương trình dịch - Bài 8: Văn phạm LL(k) trình bày các nội dung: Phân cấp các ngôn ngữ phi ngữ cảnh, ngôn ngữ LL (k), văn phạm LL(k), văn phạm LL(k) đơn giản. Đây là một tài liệu tham khảo hữu ích dành cho các bạn sinh viên Công nghệ thông tin dùng làm tài liệu học tập và nghiên cứu.
21/1/2010 Phân cấp ngôn ngữ phi ngữ cảnh Bài Văn phạm LL(k) Ngôn ngữ LL(k) Xem trước k ký hiệu xâu vào để định sản xuất sử dụng Được sinh 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 xâu bao gồm ký hiệu kết thúc không kết thúc FIRSTk(α) tập xâu x gồm k ký hiệu kết thúc trái xâu suy dẫn từ α (Kể trường hợp x khơng có đủ k ký hiệu α suy dẫn x , khơng cịn ký hiệu sau x) 21/1/2010 FIRSTk(α) FOLLOWk(α) Định nghĩa : Cho văn phạm G = (Σ, Δ, P, S), số nguyên dương g k , α ∈ V* FIRSTk(α) = { x ∈ Σ* | α xβ |x| = k α x |x| < k} ( Tập xâu x ∈Σ* có k ký hiệu trái suy dẫn từ α ( Kể trường hợp x khơng có đủ k ký hiệu α x , khơng cịn ký hiệu sau x)) Đặc biệt , A ký hiệu khơng kết thúc, S suy dẫn bA FOLLOW1(A) ={ε} Văn phạm LL(k) FOLLOWk(α) FOLLOWk(α) = {x ∈ Σ* | S ⇒* βαδ x∈ FIRSTk(δ)} Đặc biệt , α =A Đặ A ∈ Δ* , S FOLLOW1(A) ={ε} k ký hiệu kết thúc tiếp sau xâu suy dẫn từ α ⇒** βA Định nghĩa văn phạm phi ngữ cảnh G = (Σ, Δ, P, S) LL(k) với k cho trước với ọ cặp ặp suyy dẫn trái S => xAα => xβ1α => xZ1 S => xAα => xβ2α => xZ2 Nếu FIRSTk(Z1) = FIRSTk(Z2) β1 = β2 21/1/2010 Ví dụ Văn phạm LL(1) đơn giản LL(1) Văn phạm G = (Σ, Δ, P, S) LL(1) đơn giản sản xuất văn phạm có dạng A → a1α1 | a2α2 | anα, ∈ Σ 1≤ i ≤ n Trong ≠ aj với i ≠ j Điều kiện nhận biết văn phạm LL(1) Điều kiện LL(1) sơ đồ cú pháp Văn phạm G với sản xuất : S → aAS | b A → bSA | a Định lý Văn phạm G = (Σ, Δ, P, S) LL(1) tập A- sản xuất P có dạng A → α1 | α2 | | αn , n ≥ thoả mãn FIRST1(αi) ∩ FIRST1(αj) = ∅ Nếu αi ⇒ * ε FIRST1(αi) ∩ FOLLOW1(A) =∅ , i ≠ j Ở lối rẽ, nhánh phải bắt đầu ký hiệu khác Nếu biểu đồ có chứa đường rỗng ký hiệu đứng sau ký hiệu biểu diễn biểu đồ phải khác ký hiệu đứng đầu nhánh sơ đồ 21/1/2010 Văn phạm KPL LL(1) A FIRST(A) FOLLOW(A) Block CONST, VAR,TYPE, PROCEDURE,BEGIN ,; Unsignedconst ident, number,’ Constant +,-,’,ident,number T Type id t i t ident,integer, char,array h 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, +, -, *,/,) ,=,=,!= ... Unsignedconst ident, number,’ Constant + ,-, ’,ident,number T Type id t i t ident,integer, char,array h Statement ident, CALL, BEGIN, WHILE,FOR ,;, END Expression + ,-, (,ident,number ,;, END,TO,THEN,DO,),,.),=,=,!=... Văn phạm G với sản xuất : S → aAS | b A → bSA | a Định lý Văn phạm G = (Σ, Δ, P, S) LL(1) tập A- sản xuất P có dạng A → α1 | α2 | | αn , n ≥ thoả mãn FIRST1(αi) ∩ FIRST1(αj) = ∅ Nếu αi... ident,number, ( ,;,END,TO,THEN,DO,),,=,=,!= Factor ident, number, ( ,;,END,TO,THEN, DO, +, -, *,/,) ,=,=,!=