Tham khảo bài thuyết trình ''''bài giảng môn lý thuyết ôtômát và ngôn ngữ hình thức - chương 5'''', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Chương Ngôn ngữ phi ngữ cảnh 5.1 Văn phạm phi ngữ cảnh 5.2 Phân tích cú pháp tính nhập nhằng 5.3 Văn phạm phi ngữ cảnh ngôn ngữ lập trình Trang 157 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Văn phạm phi ngữ cảnh Định nghĩa 5.1 Một văn phạm G = (V, T, S, P) gọi phi ngữ cảnh (context free) luật sinh P có dạng A → x, A ∈ V cịn x ∈ (V ∪T)* Một ngơn ngữ gọi phi ngữ cảnh có VPPNC G cho L = L(G) Nhận xét Mọi NNCQ PNC, điều ngược lại khơng Như thấy sau họ NNCQ tập thực họ NNPNC Trang 158 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Các ví dụ NNPNC Ví dụ Văn phạm G = ({S}, {a, b}, S, P), có luật sinh S → aSa | bSb | λ, PNC Một dẫn xuất điển hình văn phạm S ⇒ aSa ⇒ aaSaa ⇒ aabSbaa ⇒ aabbaa Dễ thấy L(G) = {wwR: w ∈ {a, b}*} Văn phạm ví dụ khơng PNC mà cịn tuyến tính Các VPCQ tuyến tính rõ ràng PNC, VPPNC khơng thiết tuyến tính Trang 159 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Các ví dụ NNPNC (tt) Ví dụ Ngôn ngữ sau PNC L = {anbn: n ≥ 0} VPPNC cho ngôn ngữ là: S → aSb | λ Ví dụ Ngơn ngữ sau PNC L = {anbm: n ≠ m} Trường hợp n > m Trường hợp m > n S → AS1 S → S1B S1→ aS1b | λ S1→ aS1b | λ A → aA | a B → bB | b VP kết S → AS1 | S1B S1→ aS1b | λ A → aA | a B → bB | b Trang 160 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Các ví dụ NNPNC (tt) Ví dụ Xét văn phạm sau S → aSb | SS | λ Văn phạm sinh ngôn ngữ L = {w ∈ {a, b}*: na(w) = nb(w) na(v) ≥ nb(v), với v tiếp đầu ngữ w} Nhận xét Nếu ngôn ngữ thay a dấu mở ngoặc (, b dấu đóng ngoặc ), ngơn ngữ tương ứng với cấu trúc ngoặc lồng nhau, chẳng hạn (( )) hay (( ) ( )), phổ biến ngôn ngữ lập trình Trang 161 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Dẫn xuất trái phải Trong VPPNC mà khơng tuyến tính, dẫn xuất bao gồm nhiều dạng câu với nhiều biến Như vậy, có lựa chọn thứ tự biến để thay Xét văn phạm G = ({A, B, S}, {a,b}, S, P) với luật sinh S → AB, A → aaA, B → Bb, A → λ, B → λ Dễ dàng thấy văn phạm sinh ngôn ngữ L(G) = {a2nbm : n ≥ 0, m ≥ 0} Bây xét hai dẫn xuất chuỗi aab S ⇒ AB ⇒ aaAB ⇒ aaB ⇒ aaBb ⇒ aab ⇒ ⇒ ⇒ ⇒ ⇒ S AB ABb aaABb aaAb aab Trang 162 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Dẫn xuất trái phải (tt) Để trình bày luật sinh sử dụng, đánh số luật sinh ghi số thích hợp kí hiệu dẫn xuất ⇒ Từ thấy hai dẫn xuất không tạo câu mà sử dụng xác luật sinh giống khác biệt thứ tự luật sinh áp dụng Để loại bỏ yếu tố không quan trọng thế, thường yêu cầu biến thay thứ tự định Từ đưa định nghĩa sau Định nghĩa 5.2 Một dẫn xuất gọi trái (DXTN - leftmost derivation) bước biến trái dạng câu thay Nếu biến phải thay thế, gọi dẫn xuất phải (DXPN - rightmost derivation) Trang 163 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Ví dụ Xét văn phạm với luật sinh (được đánh số bên tay phải) S → aAB, A → bBb, B → A | λ, 3, 4 S ⇒ aAB ⇒ abBbB ⇒ abAbB ⇒ abbBbbB ⇒ abbbbB ⇒ abbbb DXTN chuỗi abbbb Một DXPN chuỗi 2 4 S ⇒ aAB ⇒ aA ⇒ abBb ⇒ abAb ⇒ abbBbb ⇒ abbbb DXTN DXPN có lợi điểm ta cần trình bày dãy số hiệu luật sinh dùng để sinh câu mà khơng sợ bị nhầm lẫn DXTN abbbb là: 123244 DXPN abbbb là: 142324 Trang 164 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Cây dẫn xuất Một cách thứ hai để trình bày dẫn xuất, độc lập với thứ tự luật sinh áp dụng, dẫn xuất (CDX) Một CDX có thứ tự nốt gán nhãn với vế trái luật sinh nốt biểu diễn vế phải tương ứng Chẳng hạn, bên trình bày phần CDX biểu diễn luật sinh A → abABc A a b A B c Trang 165 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Cây dẫn xuất (tt) Định nghĩa 5.3 Cho G = (V, T, S, P) VPPNC Một có thứ tự dẫn xuất cho G có tính chất sau Gốc gán nhãn S Mỗi có nhãn lấy từ tập T ∪ {λ} Mỗi nốt bên (khơng phải lá) có nhãn lấy từ V Nếu nốt có nhãn A ∈ V, gán nhãn (từ trái sang phải) a1, a2, , an, P phải chứa luật sinh có dạng A → a1a2 an Một gán nhãn λ khơng có anh chị em, tức là, nốt với gán nhãn λ khơng thể có khác Trang 166 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Ví dụ PTCP từ lên Hãy PTCP từ lên cho w = abbcde văn phạm G sau: S → aABe (1) A → Abc | b (2, 3) B→d (4) B1 Các dẫn xuất a b b c d e A B2 Thu giảm A → b a b b c d e A B3 Thu giảm A → Abc a A b b c d e Trang 174 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Ví dụ PTCP từ lên (tt) S → aABe (1) A → Abc | b (2, 3) B→d (4) B4 Thu giảm B → d B5 Thu giảm S → aABe A a A B b b c d e S A A B a b b c d e Kết quả: abbcde ⇐ aAbcde ⇐ aAde ⇐ aABe ⇐ S Hay S ⇒ aABe ⇒ aAde ⇒ aAbcde ⇒ abbcde (DXPN) Trang 175 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Phương pháp PTCP vét cạn Qua ví dụ ta thấy, vấn đề cốt lõi PTCP từ lên là định chọn chuỗi thành phần dạng câu để thu gọn mà có khả thu gọn thành biến mục tiêu Phương pháp phân tích cú pháp vét cạn (PPPTCPVC exhaustive search parsing) Ở lượt (round) thứ xem xét tất luật sinh có dạng S → x, tìm tất x mà dẫn xuất từ S bước Nếu khơng có kết số trùng với w, tiếp đến lượt tiếp theo, áp dụng tất luật sinh tới biến trái x Trang 176 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Phương pháp PTCP vét cạn (tt) Trong lượt kế tiếp, lại lấy tất biến trái áp dụng tất luật sinh có thể, lặp lại bước Nhận xét Sau lượt thứ n có dạng câu mà dẫn xuất từ S với n luật sinh Nếu w ∈ L(G), phải có DXTN có độ dài hữu hạn Vì phương pháp cuối tìm DXTN w Ví dụ Xét văn phạm S → SS | aSb | bSa | λ chuỗi w = aabb 1, 2, 3, Trang 177 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Ví dụ S → SS | aSb | bSa | λ 1, 2, 3, Lượt Lượt S ⇒ SS 1.1 S ⇒ SS ⇒ SSS S ⇒ aSb 1.2 S ⇒ SS ⇒ aSbS S ⇒ bSa 1.3 S ⇒ SS ⇒ bSaS S ⇒ λ 1.4 S ⇒ SS ⇒ S 2.1 S ⇒ aSb ⇒ aSSb 2.2 S ⇒ aSb ⇒ aaSbb 2.3 S ⇒ aSb ⇒ abSab 2.4 S ⇒ aSb ⇒ ab w = aabb Đến Lượt ta tìm thấy 2.2.4 S ⇒ aSb ⇒ abSab ⇒ abab Vậy chuỗi aabb thuộc ngôn ngữ văn phạm xét Trang 178 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Nhận xét PPPTCPVC có nhược điểm nghiêm trọng sau Không hiệu Bị bùng nổ tổ hợp Có khả khơng kết thúc chuỗi ∉ L(G) Chẳng hạn với w = abb, phương pháp đến việc sinh vô hạn dạng câu mà không dừng lại, bổ sung thêm vào cách dừng lại Nhược điểm khắc phục giới hạn văn phạm không phép chứa luật sinh rỗng (A → λ) đơn vị (A → B) Trang 179 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Định lý Định lý 5.2 Giả sử G = (V, T, S, P) VPPNC mà khơng có luật sinh có dạng A → λ, hay A → B, A, B ∈V, PPPTCPVC thực thành giải thuật mà ∀ w ∈ T*, tạo PTCP w, biết khơng có PTCP cho Chứng minh Ở bước dẫn xuất chiều dài số kí hiệu kết thúc dạng câu tăng đơn vị Vì sau khơng (2|w| 1) lượt, xác định w có ∈ L(G) khơng Trang 180 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Định lý (tt) Định lý 5.3 Đối ∀ VPPNC ∃ giải thuật mà phân tích chuỗi w có ∈ L(G) khơng số bước tỉ lệ với |w|3 Nhận xét Một PP mà thời gian tỉ lệ với |w|3 không hiệu Nếu trình biên dịch dựa cần lượng thời gian lớn để PTCP cho chí chương trình có độ dài trung bình Những mà muốn tỉ lệ với |w| Chúng ta gọi PP PPPTCP thời gian tuyến tính Tổng qt, khơng biết PPPTCP thời gian tuyến tính cho NNPNC, PP tìm thấy số lớp VP đặc biệt Trang 181 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Văn phạm-s Văn phạm-s (simple grammar) Là VPPNC luật sinh có dạng A → ax A ∈ V, a ∈ T, x ∈ V*, cặp (A, a) xuất tối đa luật sinh Nói cách khác, hai luật sinh mà có vế trái giống vế phải chúng phải bắt đầu kí hiệu kết thúc khác Ví dụ Bên ví dụ văn phạm-s S → aS | bA (1, 2) A → aAA | b (3, 4) Trang 182 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin Văn phạm-s (tt) Văn phạm-s cho phép PTCP chuỗi w không |w| bước Với cặp (A, a) A biến cần thay thế, a kí hiệu xét chuỗi nhập, có tối đa vế phải A áp dụng S → aS | bA (1, 2) Ví dụ với VP việc PTCP chuỗi ababb A → aAA | b (3, 4) tốn bước kết sau aS ⇒ abA ⇒ ababA ⇒ ababb S⇒ abaAA ⇒ Văn phạm-s mở rộng x, cách cho x ∈ (V ∪ T)* Điều không làm thay đổi khả tính chất văn phạm mà cịn làm q trình PTCP đơn giản chút Ngơn ngữ Pascal biểu thị văn phạm-s Trang 183 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Tính nhập nhằng VP NN Định nghĩa 5.4 Một VPPNC G gọi nhập nhằng ∃ w ∈ L(G) mà có hai CDX khác Nói cách khác, nhập nhằng suy tồn hai hay nhiều DXTN hay PN Ví dụ Xét văn phạm sau G = (V, T, E, P) với V = {E, I}, T = {a, b, c, +, *, (, )} luật sinh E → I | E + E | E * E | (E) I→a|b|c Văn phạm nhập nhằng với chuỗi a + b * c có hai CDX khác G sau Trang 184 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Tính nhập nhằng VP NN (tt) E E + E I E * a E E E * E E + T + E I T T * c F F I I I c a b E E I I I I b c a b VP sau tương đương với VP khơng có nhập nhằng Tập biến V = {E, T, F, I} E→T|E+T T→F|T*F F → I | (E) Trang 185 I →a|b|c Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin F Tính nhập nhằng VP NN (tt) Định nghĩa 5.5 Nếu L NNPNC mà ∃ VP khơng nhập nhằng, L gọi không nhập nhằng Nếu VP sinh L mà nhập nhằng, NN gọi nhập nhằng cố hữu Ví dụ Ngơn ngữ L = {anbncm} ∪ { anbmcm } với n, m không âm NNPNC nhập nhằng cố hữu (Chú ý L = L1 ∪ L2) G2: S2 → AX2 G1: S1 → X1C X2 → bX2c | λ X1 → aX1b | λ C → cC | λ A → aA | λ Một VP cho L cách kết hợp hai VP với luật sinh thêm vào S → S1 | S2 Trang 186 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Tính nhập nhằng VP NN (tt) Văn phạm nhập nhằng chuỗi anbncn thuộc L1 lẫn L2 nên có hai dẫn xuất riêng biệt bắt đầu S ⇒ S1 bắt đầu S ⇒ S2 Điều gợi ý cho chứng minh VP cho L nhập nhằng chuỗi anbncn tương tự trường hợp Một chứng minh chặt chẽ thực tài liệu Harrison năm 1978 Ở để lại tập cho bạn Trang 187 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin VPPNC ngôn ngữ lập trình Một ứng dụng quan trọng lý thuyết NNHT định nghĩa NNLT xây dựng trình dịch cho chúng Theo truyền thống người ta dùng dạng ký pháp Backus-Naur (viết tắt BNF) để viết NNLT Chẳng hạn ::= | + , ::= | * , ::= if Văn phạm-s không đủ sức để biểu diễn NNLT Có hai loại văn phạm LL LR có khả biểu diễn NNLT, cho phép PTCP thời gian tuyến tính Khơng ∃ giải thuật loại bỏ nhập nhằng VP VPPNC biểu diễn mặt ngữ nghĩa NNLT Trang 188 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin ... tính Trang 159 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Các ví dụ NNPNC (tt) Ví dụ Ngơn ngữ sau PNC L = {anbn: n ≥ 0} VPPNC cho ngôn ngữ là: S → aSb | λ Ví dụ Ngôn ngữ sau PNC...Văn phạm phi ngữ cảnh Định nghĩa 5. 1 Một văn phạm G = (V, T, S, P) gọi phi ngữ cảnh (context free) luật sinh P có dạng A → x, A ∈ V cịn x ∈ (V ∪T)* Một ngôn ngữ gọi phi ngữ cảnh có VPPNC... thêm vào cách dừng lại Nhược điểm khắc phục giới hạn văn phạm không phép chứa luật sinh rỗng (A → λ) đơn vị (A → B) Trang 179 Lý thuyết Ơtơmát & NNHT - Khoa Công Nghệ Thông Tin Định lý Định lý