Văn phạm phi ngữ cảnh Contextfree Grammar

12 185 0
Văn phạm phi ngữ cảnh Contextfree Grammar

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Văn phạm phi ngữ cảnh Văn phạm phi ngữ cảnh Bởi: Huynh Tram Vo VĂN PHẠM PHI NGỮ CẢNH Nội dung : Trong chương này, ta nghiên cứu loại văn phạm quan trọng, gọi văn phạm phi ngữ cảnh (CFG) lớp ngôn ngữ mà chúng mô tả - ngôn ngữ phi ngữ cảnh(CFL) CFL, tập hợp quy, có nhiều ứng dụng thực tế quan trọng, đặc biệt việc biểu diễn ngơn ngữ lập trình Chẳng hạn, CFG dùng hữu ích để mô tả biểu thức số học dấu ngoặc lồng hay cấu trúc khối ngơn ngữ lập trình (cấu trúc khối begin-end) Sau định nghĩa văn phạm phi ngữ cảnh, số cách biến đổi văn phạm phi ngữ cảnh nhằm giản lược đưa dạng chuẩn trình bày Cuối chương, bổ đề bơm cho ngơn ngữ CFL số tính chất nhằm xác định tập ngôn ngữ giới thiệu Mục tiêu cần đạt: Cuối chương, sinh viên cần phải nắm vững: Khái niệm CFG, xác định thành phần CFG Nhận dạng lớp ngôn ngữvăn phạm CFG đặc tả Xây dựng luật sinh cho CFG đặc tả lớp ngôn ngữ Các bước giản lược văn phạm CFG không chứa giá trị vơ ích Chuẩn hóa CFG dạng chuẩn Chomsky Greibach Ứng dụng bổ đề bơm cho CFL để chứng tỏ ngôn ngữ không ngôn ngữ phi ngữ cảnh Xác định ngôn ngữ có thuộc lớp ngơn ngữ phi ngữ cảnh hay khơng theo tính chất CFL 1/12 Văn phạm phi ngữ cảnh Kiểm tra tính rỗng, hữu hạn vơ hạn CFL Kiến thức bản: Để tiếp thu tốt nội dung chương này, trước hết sinh viên cần hiểu rõ cấu trúc cú pháp số ngơn ngữ lập trình cấp cao Pascal, C; nắm vững lý thuyết đồ thị cây; phương pháp chứng minh phản chứng phân cấp lớp văn phạm theo Noam Chomsky; … Tài liệu tham khảo : John E Hopcroft, Jeffrey D.Ullman – Introduction to Automata Theory, Languages and Computation – Addison – Wesley Publishing Company, Inc – 1979 (Chapter : Context – Free Grammars) V.J Rayward-Smith – A First course in Formal Language Theory (Second Editor) – McGraw-Hill Book Company Europe – 1995 (Chapter 5: Context-Free Languages ) From Wikipedia, the free encyclopedia – Context-Free Grammar: http://en.wikipedia.org/wiki/Context-free_grammar VĂN PHẠM PHI NGỮ CẢNH (CFG : Context Free Grammar) Xuất xứ văn phạm phi ngữ cảnh mô tả thông qua ngôn ngữ tự nhiên Ta viết quy tắc cú pháp để diễn tả câu “An sinh viên giỏi“ sau : < câu đơn > → < chủ ngữ > < vị ngữ > < chủ ngữ > → < danh từ > < vị ngữ > → < động từ > < bổ ngữ > < bổ ngữ > → < danh từ > < tính từ > < danh từ > → An < danh từ > → sinh viên < động từ > → < tính từ > → giỏi 2/12 Văn phạm phi ngữ cảnh Các từ dấu móc nhọn < câu đơn >, < chủ ngữ >, < vị ngữ >, phạm trù cú pháp, cho ta vai trò phận hợp thành câu Ta thấy câu sinh qua bước triển khai theo quy tắc cú pháp Đây dạng luật sinh văn phạm phi ngữ cảnh Và vậy, văn phạm phi ngữ cảnh chọn làm mơ hình cho văn phạm ngôn ngữ tự nhiên Tuy nhiên, khoa học máy tính, với nhu cầu biểu diễn ngơn ngữ lập trình, văn phạm phi ngữ cảnh CFG thiết kế thành dạng tương đương gọi văn phạm BNF (Backus - Naur Form) Đây văn phạm CFG với thay đổi nhỏ dạng thức số ký hiệu viết tắt mà nhà khoa học máy tính thường ứng dụng việc diễn tả cú pháp ngôn ngữ lập trình cấp cao (như ALGOL, PASCAL, ) Trong dạng thức văn phạm BNF, ký hiệu ::= dùng thay cho ký hiệu → Chẳng hạn, để định nghĩa biểu thức số học (expression) bao gồm danh biểu (identifier) tham gia vào phép toán +, * biểu thức lồng dấu ngoặc đơn , ta viết : ::= + ::= * ::= ( ) ::= Việc nghiên cứu văn phạm phi ngữ cảnh tạo nên sở lý luận vững cho việc biểu diễn ngơn ngữ lập trình, việc tìm kiếm giải thuật phân tích cú pháp vận dụng chương trình dịch cho nhiều ứng dụng khác xử lý chuỗi Chẳng hạn, hữu ích việc mô tả biểu thức số học với nhiều dấu ngoặc lồng cấu trúc khối ngơn ngữ lập trình mà biểu thức quy đặc tả Định nghĩa Văn phạm phi ngữ cảnh tập hợp hữu hạn biến (còn gọi ký hiệu chưa kết thúc), biến biểu diễn ngôn ngữ Ngôn ngữ biểu diễn biến mô tả cách đệ quy theo thuật ngữ khái niệm khác gọi ký hiệu kết thúc Quy tắc quan hệ biến gọi luật sinh Mỗi luật sinh có dạng biến vế trái sinh chuỗi gồm biến lẫn ký hiệu kết thúc văn phạm Văn phạm phi ngữ cảnh (CFG) hệ thống gồm bốn thành phần, ký hiệu văn phạm G (V, T, P, S), : V tập hữu hạn biến (hay ký tự chưa kết thúc) T tập hữu hạn ký tự kết thúc, V ? T = ∅ 3/12 Văn phạm phi ngữ cảnh P tập hữu hạn luật sinh mà luật sinh có dạng A → α với A biến α chuỗi ký hiệu ∈ (V T)* S biến đặc biệt gọi ký hiệu bắt đầu văn phạm Thí dụ 5.1 : Văn phạm G ({S, A, B}, {a, b}, P, S ), P gồm luật sinh sau: S ® AB A ® aA A®a B ® bB B®b Quy ước ký hiệu: - Các chữ in hoa A, B, C, D, E, S ký hiệu biến (S thường dùng làm ký hiệu bắt đầu ) - Các chữ nhỏ a, b, c, d, e, ; chữ số số ký hiệu khác ký hiệu cho ký hiệu kết thúc - Các chữ in hoa X, Y, Z ký hiệu ký hiệu kết thúc biến - Các chữ Hi-lạp α, β, γ, biểu diễn cho chuỗi ký hiệu kết thúc biến Ta biểu diễn văn phạm cách tóm tắt cách liệt kê luật sinh Nếu A ® α1, A ® α2 , , A ® αk luật sinh biến A văn phạm đó, ta ghi ngắn gọn A ® α1 | α2 | | αk Thí dụ 5.2 : Văn phạm Thí dụ 5.1 viết gọn : S ® AB A ® aA | a B ® bB | b 4/12 Văn phạm phi ngữ cảnh Dẫn xuất ngôn ngữ Dẫn xuất: Để định nghĩa ngôn ngữ sinh văn phạm CFG G (V, T, P, S), ta dẫn nhập khái niệm dẫn xuất Trước hết ta giới thiệu hai quan hệ ⇒G ⇒*G hai chuỗi tập (V T)* Nếu A → β luật sinh văn phạm α, γ hai chuỗi tập (V T)* αA? ⇒G αβ?, hay ta nói luật sinh A → β áp dụng vào chuỗi αA? để thu chuỗi αβ?, nghĩa αA? sinh trực tiếp αβ γ văn phạm G Hai chuỗi gọi quan hệ ⇒G chuỗi thứ hai thu từ chuỗi thứ cách áp dụng luật sinh Giả sử α1, α2, , αm chuỗi thuộc (V T)* với m ≥ : α1 ⇒G α2, α2 ⇒G α3, …, αm -1 ⇒G αm ta nói α1⇒*G αm hay α1 dẫn xuất αm văn phạm G Như vậy, ⇒*G bao đóng phản xạ bắc cầu ⇒G Nói cách khác, α ⇒*G β β dẫn từ α không nhiều luật sinh P Chú ý α ⇒*G α với chuỗi α Thơng thường khơng có nhầm lẫn ta dùng ký hiệu ⇒ ⇒* thay cho ký hiệu ⇒G ⇒*G Nếu α dẫn β i bước dẫn xuất ta ký hiệu α ⇒i β Ngôn ngữ sinh văn phạm phi ngữ cảnh Cho văn phạm CFG G(V, T, P, S), ta định nghĩa : L(G) = {w|w ∈ T * S ⇒*G w} Nghĩa là, chuỗi thuộc L(G) nếu: 1) Chuỗi gồm toàn ký hiệu kết thúc 5/12 Văn phạm phi ngữ cảnh 2) Chuỗi dẫn từ ký hiệu bắt đầu S Ta gọi L ngơn ngữ phi ngữ cảnh (CFL) L(G) với CFG G Chuỗi α gồm ký hiệu kết thúc biến, gọi dạng câu sinh từ G S ⇒*α Hai văn phạm G1, G2 gọi tương đương L(G1) = L(G2) Thí dụ 5.3 : Xét văn phạm G (V, T, P, S), : V = {S}, T = {a, b}, P = {S ® aSb, S ® ab} Bằng cách áp dụng luật sinh thứ n -1 lần luật sinh thứ hai lần, ta có: S Þ aSb Þ aaSbb Þ a3Sb3 Þ Þ an-1bn-1 Þ anbn Vậy, L(G) chứa chuỗi có dạng anbn, hay L(G) = {anbn | n ≥ 1} Cây dẫn xuất Để dễ hình dung phát sinh chuỗi văn phạm phi ngữ cảnh, ta thường diễn tả chuỗi dẫn xuất qua hình ảnh Một cách hình thức, ta định nghĩa sau: Định nghĩa : Cho văn phạm G (V, T, P, S) Cây dẫn xuất (hay phân tích cú pháp) G định nghĩa sau : i) Mỗi nút (đỉnh) có nhãn, ký hiệu ∈ (V T {ε}) ii) Nút gốc có nhãn ký hiệu bắt đầu S iii) Nếu nút trung gian có nhãn A A ∈ V iv) Nếu nút n có nhãn A đỉnh n1, n2, , nk n theo thứ tự từ trái sang phải có nhãn X1, X2, , Xk A → X1X2 Xk luật sinh tập luật sinh P v) Nếu nút n có nhãn từ rỗng ε n phải nút nút nút cha Thí dụ 5.4 : Xét văn phạm G ({S, A}, {a, b}, P, S), P gồm: S ® aAS | a A ® SbA | SS | ba 6/12 Văn phạm phi ngữ cảnh Một dẫn xuất từ văn phạm có dạng hình 5.1 sau : Ta thấy, nút có nhãn S a, A, S (chú ý S → aAS luật sinh) Tương tự, nút có nhãn A S, b, A (từ luật sinh A → SbA) Nút 4, có nhãn S có nút nhãn a (luật sinh S → a) Cuối nút có nhãn A có nút b, a (luật sinh A → ba) Trên dẫn xuất, ta đọc theo thứ tự từ “trái sang phải“ ta có dạng câu G Ta gọi chuỗi chuỗi sinh dẫn xuất Hình 5.1 - Cây dẫn xuất từ văn phạm Một (subtree) dẫn xuất có nút gốc nhãn A gọi A-cây (hoặc A-cây) Cây giống dẫn xuất, khác nhãn nút gốc không thiết phải ký hiệu bắt đầu S Thí dụ 5.5 : Xét văn phạm dẫn xuất Hình 5.1 Đọc theo thứ tự từ trái sang phải ta có chuỗi aabbaa, trường hợp tất ký hiệu kết thúc, nói chung khơng bắt buộc thế, có nhãn ε biến Ta thấy dẫn xuất S ⇒* aabbaa chuỗi dẫn xuất : S Þ aAS Þ aSbAS Þ aabAS Þ aabbaS Þ aabbaa A-cây có nút đỉnh tạo chuỗi abba theo chuỗi dẫn xuất : S Þ SbAÞ abA Þ abba 7/12 Văn phạm phi ngữ cảnh Quan hệ dẫn xuất dẫn xuất ĐỊNH LÝ 5.1 : Nếu G (V, T, P, S) văn phạm phi ngữ cảnh S ⇒* α có dẫn xuất văn phạm sinh α Chứng minh Ta chứng minh với biến A bất kỳ, A ⇒ * α có A-cây sinh α Nếu : Giả sử α sinh A-cây, ta chứng minh quy nạp theo số nút trung gian dẫn xuất A ⇒ * α Nếu có nút trung gian phải có dạng hình sau : Khi X X X n chuỗi α A → α luật sinh P theo định nghĩa dẫn xuất Hình 5.2(a) - A-cây với nút Giả sử kết tới k -1 nút trung gian ( k > 1) Ta chứng minh kết với k nút 8/12 Văn phạm phi ngữ cảnh Xét α sinh A-cây có k nút trung gian Rõ ràng nút nút gốc tất lá, ta gọi chúng từ trái sang phải X , X , , X n chắn A → X X X n luật sinh Xét nút X i : - Nếu X i không nút X i phải biến X i - sinh chuỗi α i - Nếu X i nút lá, ta đặt α i = X i Dễ thấy j < i α j bên trái α j , chuỗi đọc từ có dạng α = α α α n Mỗi X i - phải có nút trung gian ban đầu, theo giả thiết quy nạp, với đỉnh i khơng phải X i ⇒ * α i Vậy A ⇒ X X X n ⇒ * α X X n ⇒ * α α X X n ⇒ * ⇒ * α α αn=α Hay ta có A ⇒ * α Chú ý nhiều cách dẫn xuất α Chỉ : Ngược lại, giả sử A ⇒ * α ta cần A - sinh α Nếu A ⇒ * α bước dẫn xuất A → α luật sinh P có dẫn xuất sinh α hình Giả sử kết tới k-1 bước dẫn xuất Xét A ⇒ * α k bước dẫn xuất, gọi bước A → X X X n Rõ ràng, ký hiệu α phải dẫn từ biến X i Vì vậy, ta viết α = α α α n , ≤ i ≤ n thoả mãn : - α i = X i X i ký hiệu kết thúc - X i ⇒ * α i X i biến Nếu X i biến dẫn xuất α i từ X i phải có k bước Vì vậy, theo giả thiết quy nạp ta có X i - sinh α i , đặt T i Bây ta dựng A - có n X X X n Mỗi X i không ký hiệu kết thúc ta thay T i tương ứng Cuối cùng, ta có dẫn xuất sinh có dạng sau : 9/12 Văn phạm phi ngữ cảnh Hình 5.2(b) - A-cây Thí dụ 5.6 : Xét chuỗi dẫn xuất S ⇒* aabbaa cho văn phạm Thí dụ 5.4 Bước dẫn xuất S → aAS Theo dõi bước suy dẫn sau đó, ta thấy biến A thay SbA, trở thành abA cuối thành abba, kết T2 (A - cây) Còn biến S thay a kết T3 (S -cây) Ghép nối lại, ta dẫn xuất mà kết chuỗi aabbaa Hình 5.3 - Ghép nối dẫn xuất Dẫn xuất trái nhất, dẫn xuất phải Nếu bước dẫn xuất, luật sinh áp dụng vào biến bên trái ta gọi dẫn xuất trái (leftmost) hay dẫn xuất trái Tương tự, biến bên phải thay bước dẫn xuất, dẫn xuất phải (rightmost) hay dẫn xuất phải Nếu chuỗi w ∈ L(G) với CFG G w có dẫn xuất tương ứng với này, w có dẫn xuất trái dẫn xuất phải Dĩ nhiên, w có nhiều dẫn xuất trái (phải) có nhiều dẫn xuất 10/12 Văn phạm phi ngữ cảnh Thí dụ 5.7 : Xét dẫn xuất Hình 5.1 Dẫn xuất trái : S Þ aAS Þ aSbAS Þ aabAS Þ aabbaS Þ aabbaa Dẫn xuất phải tương ứng : S Þ aAS Þ aAa Þ aSbAa Þ aSbbaa Þ aabbaa Văn phạm mơ hồ Một văn phạm phi ngữ cảnh G có nhiều dẫn xuất cho chuỗi w, G gọi văn phạm mơ hồ (ambiguity) Dĩ nhiên, nói văn phạm G mơ hồ có chuỗi w dẫn từ ký hiệu bắt đầu S với hai dẫn xuất trái hai dẫn xuất phải Thí dụ 5.8 : Xét văn phạm G với luật sinh sau : E→E+E|E*E|(E)|a Văn phạm sinh chuỗi biểu thức số học với phép toán + * Với chuỗi a + a * a, ta vẽ đến hai dẫn xuất khác sau : (a) (b) Hình 5.4 - Các dẫn xuất khác cho chuỗi nhập Điều có nghĩa biểu thức a + a * a hiểu theo hai cách khác nhau: thực phép cộng trước hay phép nhân trước ? Để khắc phục mơ hồ này, ta : 11/12 Văn phạm phi ngữ cảnh - Hoặc quy định phép cộng nhân luôn thực theo thứ tự từ trái sang phải (trừ gặp ngoặc đơn) Ta viết văn phạm G1 không mơ hồ tương đương sau : E→E+T|E*T|T T→(E)|a - Hoặc quy định khơng có dấu ngoặc đơn ngăn cách phép nhân luôn ưu tiên phép cộng Ta viết văn phạm G2 không mơ hồ tương đương sau : E→E+T|T T→T*F|F F→(E)|a 12/12 ... sinh văn phạm phi ngữ cảnh Và vậy, văn phạm phi ngữ cảnh chọn làm mơ hình cho văn phạm ngơn ngữ tự nhiên Tuy nhiên, khoa học máy tính, với nhu cầu biểu diễn ngơn ngữ lập trình, văn phạm phi ngữ cảnh. .. – Context-Free Grammar: http://en.wikipedia.org/wiki/Context-free _grammar VĂN PHẠM PHI NGỮ CẢNH (CFG : Context Free Grammar) Xuất xứ văn phạm phi ngữ cảnh mô tả thông qua ngơn ngữ tự nhiên Ta... xuất : S Þ SbAÞ abA Þ abba 7/12 Văn phạm phi ngữ cảnh Quan hệ dẫn xuất dẫn xuất ĐỊNH LÝ 5.1 : Nếu G (V, T, P, S) văn phạm phi ngữ cảnh S ⇒* α có dẫn xuất văn phạm sinh α Chứng minh Ta chứng minh

Ngày đăng: 07/11/2018, 18:09

Mục lục

  • Văn phạm phi ngữ cảnh

  • VĂN PHẠM PHI NGỮ CẢNH

    • Nội dung chính :

    • Mục tiêu cần đạt:

    • Kiến thức cơ bản:

    • Tài liệu tham khảo :

    • VĂN PHẠM PHI NGỮ CẢNH (CFG : Context Free Grammar)

      • Định nghĩa

      • Dẫn xuất và ngôn ngữ

      • Quan hệ giữa dẫn xuất và cây dẫn xuất

      • Chứng minh

        • Dẫn xuất trái nhất, dẫn xuất phải nhất

        • Văn phạm mơ hồ

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan