Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
633,14 KB
Nội dung
CHƯƠNG TRÌNH DỊCH Bài 7: Biểu Diễn Cây & Các Chiến Lược Phân Tích Cú Pháp Nội dung Suy dẫn Biểu diễn suy dẫn cấu trúc Văn phạm có nhập nhằng Các chiến lược phân tích cú pháp Chiến lược thử-sai (quay lui): top-down, bottom-up Chiến lược quy hoạch động: CYK, Earley,… Chiến lược tất định (deterministic): LL, LR,… Bài tập TRƯƠNG XUÂN NAM Phần Suy dẫn TRƯƠNG XUÂN NAM Suy dẫn Khái niệm: αAβ ⇒ αγβ (gọi αAβ suy dẫn αγβ) A → γ luật sinh, α β chuỗi ký hiệu thuộc ngơn ngữ L Nếu α1 ⇒ α2 ⇒ … ⇒ αn ta nói α1 suy dẫn αn Hệ thống kí hiệu: ⇒ ⇒* ⇒+ suy dẫn trực tiếp suy dẫn qua nhiều bước suy dẫn qua nhiều bước Một số tính chất: α ⇒* α với ∀α α ⇒* β β ⇒* γ α ⇒* γ TRƯƠNG XUÂN NAM Suy dẫn trái suy dẫn phải Bài tốn phân tích cú pháp thực chất tốn tìm chuỗi suy dẫn S ⇒* α ⇒* β, đó: S kí hiệu gốc α chuỗi có chứa kí hiệu trung gian β chuỗi gồm kí hiệu kết thúc Dễ nhận thấy q trình suy dẫn trên: Có nhiều phương án suy dẫn từ S thành β Một kí hiệu trung gian thuộc α trước sau phải bị biến đổi luật sinh Nếu kí hiệu trung gian chọn để biến đổi trái α ta gọi phương án suy dẫn trái Định nghĩa tương tự cho suy dẫn phải TRƯƠNG XUÂN NAM Suy dẫn trái suy dẫn phải Cho văn phạm G với luật sinh: S→E+S|E E→0|1|2|3|4|5|6|7|8|9|(S) Xâu vào: W = (1 + + (3 + 4)) + Suy dẫn trái từ S thành W sau: SE+S(S)+S(E+S)+S(1+S)+S (1+E+S)+S(1+2+S)+S (1+2+E)+S(1+2+(S))+S (1+2+(E+S))+S(1+2+(3+S))+S (1+2+(3+E))+S(1+2+(3+4))+S (1+2+(3+4))+E(1+2+(3+4))+5 TRƯƠNG XUÂN NAM Suy dẫn trái suy dẫn phải Suy dẫn phải từ S thành W sau: SE+SE+EE+5(S)+5(E+S)+5 (E+E+S)+5(E+E+E)+5 (E+E+(S))+5(E+E+(E+S))+5 (E+E+(E+E))+5(E+E+(E+4))+5 (E+E+(3+4))+5(E+2+(3+4))+5 (1+2+(3+4))+5 Câu hỏi: qua ví dụ q trình biến đổi từ S thành W, nên sử dụng cách mã hóa để lưu trữ q trình suy dẫn sử dụng thơng tin để in trình suy dẫn nào? TRƯƠNG XUÂN NAM Phần Biểu diễn suy dẫn cấu trúc TRƯƠNG XUÂN NAM Cây phân tích (parse tree) S Cây phân tích thể cấu trúc suy dẫn Nút gốc kí hiệu bắt đầu Các nút ln kí hiệu kết thúc Các nút kí hiệu trung gian Cây khơng thể thứ tự thực suy dẫn trực tiếp • Việc duyệt tạo thành thứ tự thực suy dẫn • Suy dẫn trái tương đương với q trình duyệt theo thứ tự giữa-trái-phải TRƯƠNG XUÂN NAM S + E ( S ) E E + S E + S E ( S ) E + S E Cây cú pháp trừu tượng Cây cú pháp trừu tượng (abstract syntax tree) loại bỏ thông tin không cần thiết phân tích Minh họa q trình nhóm kí hiệu với Thích hợp với việc thực tính tốn tổ hợp thơng tin S ( S ) E E + S E + + + + + TRƯƠNG XUÂN NAM S + E S E ( S ) E + S E 4 10 Phần Văn phạm có nhập nhằng TRƯƠNG XUÂN NAM 12 Văn phạm có nhập nhằng Một văn phạm thiếu chặt chẽ dẫn tới việc có nhiều phân tích khác với chuỗi đầu vào Ví dụ văn phạm: S → S + S | S * S | number Phân tích xâu vào: + * Kết 1: + SS+S1+S1+S*S 1+2*S1+2*3 Kết 2: SS*SS+S*S1+S*S 1+2*S1+2*3 * + TRƯƠNG XUÂN NAM * 13 Văn phạm có nhập nhằng Văn phạm tồn chuỗi w có từ phân tích tương ứng trở lên gọi văn phạm có nhập nhằng Vấn đề lớn văn phạm có nhập nhằng tính đa nghĩa chuỗi w (có nhiều cách hiểu), hệ khơng thể tính xác ngữ nghĩa w + * + =7 * TRƯƠNG XUÂN NAM =9 14 Khử nhập nhằng Việc khử nhập nhằng thực tạo văn phạm dựa văn phạm cũ hai văn phạm khơng hồn tồn tương đương Có nhiều chiến lược khử nhập nhằng Thêm vào biến trung gian Đưa ràng buộc văn phạm (ví dụ quy định mức độ ưu tiên phép tốn) Ví dụ văn phạm: S → S + S | S * S | number Khử nhập nhằng cách thêm biến trung gian: S→S+T|T T → T * number | number TRƯƠNG XUÂN NAM 15 Phần Các chiến lược phân tích cú pháp TRƯƠNG XUÂN NAM 16 Các chiến lược phân tích cú pháp Chiến lược phân tích cú pháp chia thành nhóm: Chiến lược thử-sai (quay lui): top-down, bottom-up Chiến lược quy hoạch động: CYK, Earley,… Chiến lược tất định (deterministic): LL, LR,… Ngoài cịn có số phương pháp khác dựa đặc điểm ngôn ngữ để áp dụng kĩ thuật hiệu (ví dụ phân tích theo thứ bậc toán tử) Một số phương pháp tổng quát (như Earley chẳng hạn), đa số phương pháp làm việc với văn phạm có đặc thù riêng TRƯƠNG XUÂN NAM 17 Chiến lược thử-sai Chiến lược thử-sai quay lui nghĩ tới giải tốn phân tích văn phạm Các chiến lược đơn giản thử áp dụng luật suy dẫn đạt chuỗi suy dẫn mục tiêu Chia thành cách tiếp cận ngược nhau: Phương pháp top-down: • Nhìn từ phân tích từ xuống • Cố gắng từ S biến đổi dần w Phương pháp bottom-up: • Nhìn từ phân tích từ lên • Cố gắng thu gọn từ w S TRƯƠNG XUÂN NAM 18 Chiến lược thử-sai Cả hai phương pháp có hạn chế văn phạm đầu vào: Top-down yêu cầu văn phạm đầu vào không đệ quy trái Bottom-up yêu cầu văn phạm đầu vào khơng có sản xuất rỗng (A → ) khơng có suy dẫn dạng A + A Các chiến lược có ý nghĩa mặt lý thuyết chậm hạn chế văn phạm, nhiên trình thử-sai đem lại nhiều gợi ý cho thuật toán khác Loại bỏ hạn chế văn phạm: phương pháp vạn Loại bỏ quay lui: phương pháp tất định TRƯƠNG XUÂN NAM 19 Chiến lược quy hoạch động Ý tưởng quy hoạch động nhắm tới mục tiêu: Xây dựng phương pháp khơng có hạn chế văn phạm đầu vào Lưu trữ lại chuỗi phân tích để tránh phải quay lui Thuật toán CYK: Cần biến đổi văn phạm dạng chuẩn Chomsky Văn phạm khơng có suy dẫn rỗng Khơng quay lui Thuật tốn Earley: vạn hơn, khơng có ràng buộc văn phạm, khơng quay lui TRƯƠNG XUÂN NAM 20 Chiến lược tất định Ý tưởng tất định theo lựa chọn khác: hi sinh phong phú văn phạm để đổi lấy tốc độ Đặc điểm chung: Các văn phạm có ràng buộc định Dựa phân tích trước văn phạm để tiên đốn tình xảy Xây dựng bảng phương án, việc cần thực gặp tình cụ thể Đây chiến lược mà tất chương trình dịch sử dụng ưu tốc độ (không quay lui) TRƯƠNG XUÂN NAM 21 Phần Bài tập TRƯƠNG XUÂN NAM 22 Bài tập Xác định ngôn ngữ sinh văn phạm: S→S(S)S| S→aSb|bSa| S→+SS|*SS|a S→0S1| Xây dựng văn phạm sản sinh ngôn ngữ: Số nhị phân lẻ Số ngun khơng dấu Số ngun có dấu Số thực, số ngun khơng có dấu Các từ đơn tiếng Việt TRƯƠNG XUÂN NAM 23 Bài tập Khử nhập nhằng văn phạm mô tả biểu thức số học để phép nhân chia ưu tiên phép cộng trừ S → S A S | ( S ) | - S | số A→+|-|*|/ Xét văn phạm: S → a S b S | b S a S | a) Chứng minh văn phạm nhập nhằng cách xây dựng hai suy dẫn trái cho chuỗi w = abab b) Xây dựng suy dẫn phải tương ứng cho abab c) Xây dựng phân tích tương ứng cho abab d) *Văn phạm sinh ngôn ngữ nào? TRƯƠNG XUÂN NAM 24 Bài tập Cho văn phạm G: S → S a S | b a) Ngơn ngữ sinh văn phạm G có đặc điểm gì? b) Hãy phương án suy dẫn từ S * babab c) *Hãy công thức tổng quát tính số lượng suy dẫn từ S thành chuỗi (ba)*b Cho văn phạm G sau mô tả biểu thức logic: B → false | true | ¬ B | ( B ) | B ˄ B | B ˅ B a) Hãy viết lại văn phạm G để tránh nhập nhằng thỏa mãn: mức độ ưu tiên cao phép Đảo (¬), phép Và (˄), cuối phép Hoặc (˅) b) Hãy tạo văn phạm X G gồm biểu thức có giá trị true TRƯƠNG XUÂN NAM 25 Bài tập Xét văn phạm: S→(L)|a L→L,S|S a) Tìm ký hiệu kết thúc, khơng kết thúc b) Tìm phân tích cú pháp cho chuỗi sau i (a, a) ii (a, (a, a)) iii (a, ((a, a), (a, a) )) c) Xây dựng dẫn xuất trái cho câu b) d) Xây dựng dẫn xuất phải cho câu b) e) *Văn phạm sinh ngôn ngữ nào? TRƯƠNG XUÂN NAM 26 ... cấu trúc Văn phạm có nhập nhằng Các chiến lược phân tích cú pháp Chiến lược thử-sai (quay lui): top-down, bottom-up Chiến lược quy hoạch động: CYK, Earley,… Chiến lược tất định (deterministic):... phân tích cú pháp Chiến lược phân tích cú pháp chia thành nhóm: Chiến lược thử-sai (quay lui): top-down, bottom-up Chiến lược quy hoạch động: CYK, Earley,… Chiến lược tất định (deterministic):... pháp top-down: • Nhìn từ phân tích từ xuống • Cố gắng từ S biến đổi dần w Phương pháp bottom-up: • Nhìn từ phân tích từ lên • Cố gắng thu gọn từ w S TRƯƠNG XUÂN NAM 18 Chiến lược thử-sai Cả