Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
199,24 KB
Nội dung
VănphạmphingữcảnhVănphạmphingữcảnh Bởi: Huynh Tram Vo VĂNPHẠMPHINGỮCẢNH Nội dung : Trong chương này, ta nghiên cứu loại vănphạm quan trọng, gọi vănphạmphingữcảnh (CFG) lớp ngôn ngữ mà chúng mô tả - ngôn ngữphingữ 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ănphạmphingữ cảnh, số cách biến đổi vănphạmphingữ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ữ mà vănphạ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ănphạ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ữphingữcảnh Xác định ngôn ngữ có thuộc lớp ngơn ngữphingữcảnh hay khơng theo tính chất CFL 1/12 Vănphạmphingữ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ănphạ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ĂNPHẠMPHINGỮCẢNH (CFG : Context Free Grammar) Xuất xứ vănphạmphingữ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ănphạmphingữ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ănphạmphingữcảnh Và vậy, vănphạmphingữcảnh chọn làm mơ hình cho vănphạ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ănphạmphingữcảnh CFG thiết kế thành dạng tương đương gọi vănphạm BNF (Backus - Naur Form) Đây vănphạ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ănphạ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ănphạmphingữ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ănphạmphingữ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ănphạmVănphạmphingữcảnh (CFG) hệ thống gồm bốn thành phần, ký hiệu vănphạ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ănphạmphingữ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ănphạm Thí dụ 5.1 : Vănphạ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ănphạ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ănphạm đó, ta ghi ngắn gọn A ® α1 | α2 | | αk Thí dụ 5.2 : Vănphạm Thí dụ 5.1 viết gọn : S ® AB A ® aA | a B ® bB | b 4/12 Vănphạmphingữcảnh Dẫn xuất ngôn ngữ Dẫn xuất: Để định nghĩa ngôn ngữ sinh vănphạ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ănphạ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ănphạ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ănphạ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ănphạmphingữcảnh Cho vănphạ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ănphạmphingữcảnh 2) Chuỗi dẫn từ ký hiệu bắt đầu S Ta gọi L ngơn ngữphingữ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ănphạm G1, G2 gọi tương đương L(G1) = L(G2) Thí dụ 5.3 : Xét vănphạ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ănphạmphingữ 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ănphạ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ănphạm G ({S, A}, {a, b}, P, S), P gồm: S ® aAS | a A ® SbA | SS | ba 6/12 Vănphạmphingữcảnh Một dẫn xuất từ vănphạ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ănphạ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ănphạ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ănphạmphingữcảnh Quan hệ dẫn xuất dẫn xuất ĐỊNH LÝ 5.1 : Nếu G (V, T, P, S) vănphạmphingữcảnh S ⇒* α có dẫn xuất vănphạ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ănphạmphingữ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ănphạmphingữ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ănphạ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ănphạmphingữ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ănphạm mơ hồ Một vănphạmphingữcảnh G có nhiều dẫn xuất cho chuỗi w, G gọi vănphạm mơ hồ (ambiguity) Dĩ nhiên, nói vănphạ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ănphạm G với luật sinh sau : E→E+E|E*E|(E)|a Vănphạ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ănphạmphingữ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ănphạ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ănphạ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