Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
592,89 KB
Nội dung
CHƯƠNG TRÌNH DỊCH BÀI 2: CÁC KHÁI NIỆM CƠ SỞ Nội dung Ngôn ngữ biểu diễn ngôn ngữ Các lớp văn phạm (phân loại Chomsky) Văn phạm quy automat hữu hạn Văn phạm phi ngữ cảnh automat đẩy xuống Văn phạm có đệ quy trái Văn phạm đơn nghĩa Câu hỏi thảo luận TRƯƠNG XUÂN NAM Phần Ngôn ngữ biểu diễn ngôn ngữ TRƯƠNG XUÂN NAM Ngơn ngữ Kí hiệu (symbol): khái niệm sở để xây dựng ngôn ngữ, định nghĩa cách hình thức Ví dụ: chữ số, chữ cái, dấu kí hiệu,… Bộ chữ (alphabet): tập hợp hữu hạn kí hiệu Ví dụ: chữ tiếng Việt (a, ă, â,…, x, y, A, Ă,…, Y) Chuỗi (string): dãy hữu hạn ký hiệu thuộc ký hiệu Ví dụ: “2014” chuỗi gồm ký hiệu thuộc ký hiệu chữ số • Người ta gọi “2014” chuỗi sinh ký hiệu chữ số TRƯƠNG XUÂN NAM Ngôn ngữ Ngôn ngữ (language): Tập hợp chuỗi sinh chữ Chẳng hạn: • Ngơn ngữ tiếng Việt tập số chuỗi sinh chữ tiếng Việt • Có chuỗi sinh từ chữ tiếng Việt không thuộc ngôn ngữ tiếng Việt • Chuỗi thuộc ngôn ngữ tiếng Việt sinh chữ tiếng Việt Tổng quát: Cho chữ * tập tất xâu sinh từ (gồm xâu rỗng ) Ngôn ngữ L sinh tập * TRƯƠNG XUÂN NAM Biểu diễn ngôn ngữ Định nghĩa ngôn ngữ L tập * q trừu tượng khơng có ý nghĩa thực tế, đặc biệt khó sử dụng với thuật tốn Cần có phương pháp biểu diễn ngơn ngữ có tính định lượng Nhiều cách biểu diễn ngơn ngữ, kích cỡ ngơn ngữ L đủ nhỏ, ta việc liệt kê chuỗi L Trong thực tế: từ điển Anh-Anh, liệt kê từ tiếng Anh, từ nằm từ điển coi tiếng Anh TRƯƠNG XUÂN NAM Biểu diễn ngôn ngữ Nếu ngôn ngữ L lớn vô hạn (chẳng hạn tập số tự nhiên), liệt kê từ điển, lúc ta cần hình thức hóa chuỗi w thuộc L cách đặc điểm chuỗi Chẳng hạn: L = { w * | số ký hiệu = số ký hiệu } Biểu diễn L văn phạm nhiều phương pháp biểu diễn ngôn ngữ, phương pháp ưa thích có lợi thế: Tính chặt chẽ, vạn Gần gũi với máy stack (kiến trúc máy tính nguyên thủy) TRƯƠNG XUÂN NAM Biểu diễn ngơn ngữ Bài tốn biểu diễn ngôn ngữ: Ngôn ngữ L sinh , cho chuỗi w thuộc *, hỏi w có thuộc L hay khơng? Nếu w thuộc L, w tạo từ quy tắc nào? Bài toán số có liên hệ với việc phân tích văn phạm chương trình dịch Đã chứng minh cách chặt chẽ toán không giải trường hợp tổng quát Chúng ta giải chúng số tình hạn chế, lý văn phạm ngơn ngữ lập trình thường chặt chẽ TRƯƠNG XUÂN NAM Văn phạm Văn phạm G hệ thống (, , P, S) đó: tập hữu hạn ký hiệu kết thúc (terminal) tập hữu hạn ký hiệu khơng kết thúc (nonterminal) • Cịn gọi ký hiệu trung gian hay biến • S gọi ký hiệu khởi đầu (initial) P tập hữu hạn cặp chuỗi (, ) gọi luật văn phạm (syntax rule) hay luật sinh • Thường viết • Chuỗi phải có ký hiệu khơng kết thúc TRƯƠNG XUÂN NAM Ngôn ngữ sinh văn phạm Suy dẫn (sinh): Chuỗi gọi suy dẫn (sinh) trực tiếp từ áp dụng luật , ký hiệu • Việc áp dụng luật việc thay chuỗi chuỗi ban đầu vế phải luật Nếu từ A áp dụng liên tiếp số suy dẫn B ta gọi B suy dẫn gián tiếp từ A, kí hiệu A * B Ngôn ngữ văn phạm G tập hợp chuỗi chứa kí hiệu kết thúc sinh (trực tiếp gián tiếp) từ S, kí hiệu L(G) L(G) = { w | w * S * w } TRƯƠNG XUÂN NAM 10 Automat hữu hạn Automat hữu hạn dùng để đoán nhận lớp ngơn ngữ quy Automat Cấu trúc automat hữu hạn gồm: Hoạt động automat: Xâu vào hữu hạn Bảng chuyển Đầu đọc Xâu vào Bảng chuyển Bắt đầu từ trạng thái xuất phát Đọc liệu từ xâu vào Quan sát bảng chuyển để biết chuyển sang trạng thái Dừng kết thúc xâu vào trả trạng thái đoán nhận TRƯƠNG XUÂN NAM 18 Phần Văn phạm phi ngữ cảnh automat đẩy xuống TRƯƠNG XUÂN NAM 19 Văn phạm phi ngữ cảnh Văn phạm phi ngữ cảnh giới hạn luật sinh phải có dạng A A (nói cách vắn tắt vế trái luật có kí hiệu) Văn phạm phi ngữ cảnh sử dụng việc biểu diễn phân tích cú pháp Cú pháp ngơn ngữ lập trình thường sử dụng BNF (Backus-Naur Form) để biểu diễn cú pháp, cách viết dễ đọc hồn tồn tương đương với VPPNC = | | “(“ “)” TRƯƠNG XUÂN NAM 20 BNF (Backus-Naur Form) Quy ước BNF (Backus-Naur Form): Các ký hiệu trung gian viết thành chuỗi đặt cặp < > Các ký hiệu kết thúc, dấu ký hiệu viết cặp “ ” Ký hiệu | thể sử lựa chọn Ký hiệu = thể ký hiệu vế trái giải thích vế phải Bản thân cách viết BNF có vài biến thể, không đề cập đến để tránh nhập nhằng không cần thiết TRƯƠNG XUÂN NAM 21 Automat đẩy xuống Automat đẩy xuống chuyên dùng để đốn nhận lớp ngơn ngữ phi ngữ cảnh Cấu trúc automat gồm: Automat Bảng chuyển Đầu đọc Ngăn xếp Xâu vào Ngăn xếp đẩy xuống Hoạt động automat: Xâu vào Bảng chuyển Bắt đầu từ trạng thái xuất phát Đọc liệu từ xâu vào Quan sát bảng chuyển ngăn xếp để biết xử lý Dừng kết thúc xâu vào trạng thái kết thúc TRƯƠNG XUÂN NAM 22 Sinh automat đẩy xuống Bài tốn đốn nhận chuỗi w có thuộc lớp L(G) hay khơng có nhiều cách tiếp cận Những cách tiếp cận tổng quát: Phân tích top-down Phân tích bottom-up Phân tích CYK Phân tích Earley Những cách tiếp cận bước: cố gắng sinh automat đẩy xuống để dùng automat đoán nhận chuỗi Phân tích LL (top-down) Phân tích LR (bottom-up) TRƯƠNG XUÂN NAM 23 Phần Văn phạm có đệ quy trái TRƯƠNG XUÂN NAM 24 Văn phạm có đệ quy trái Văn phạm G gọi văn phạm có đệ quy trái chứa luật dạng A → Aα | β Kí hiệu trung gian A suy dẫn đơi lúc gây khó khăn việc sinh phân tích (đối với số thuật toán, thuật toán ưu tiên chiều sâu) Trường hợp trên, A suy dẫn trực tiếp gọi đệ quy trái trực tiếp; A suy dẫn sau số phép suy dẫn khác gọi đệ quy trái gián tiếp TRƯƠNG XUÂN NAM 25 Văn phạm có đệ quy trái Văn phạm có đệ quy trái (cả trực tiếp gián tiếp) sửa đổi để khơng cịn xuất đệ quy trái cách thêm vào kí hiệu trung gian sửa đổi luật văn phạm Ví dụ với luật trên: A → Aα | β Ta thêm kí hiệu trung gian R Và sửa luật thành: A→ β R R→αR|ε TRƯƠNG XUÂN NAM 26 Phần Văn phạm đơn nghĩa TRƯƠNG XUÂN NAM 27 Văn phạm đơn nghĩa Một văn phạm bị gọi nhập nhằng (ambiguity) tồn chuỗi w có hai phân tích tạo Văn phạm khơng có nhập nhằng văn phạm đơn nghĩa Tính đơn nghĩa đảm bảo cho ngôn ngữ sinh văn phạm có cách hiểu (khơng thể hiểu sai) Xây dựng văn phạm chặt chẽ (đơn nghĩa) cần thiết làm cho luật văn phạm trở nên phức tạp đáng kể Bài toán xác định xem văn phạm G có đơn nghĩa hay khơng tốn khó TRƯƠNG XN NAM 28 Văn phạm đơn nghĩa Xét văn phạm sau: S S + S | S * S | ( S ) | a Xây dựng phân tích chuỗi: a + a * a Ta có phân tích, dẫn đến việc có cách hiểu ngữ nghĩa chuỗi (nếu thay a số có cách tính giá trị chuỗi) TRƯƠNG XN NAM 29 Phần Câu hỏi thảo luận TRƯƠNG XUÂN NAM 30 Câu hỏi thảo luận Hãy sửa đổi văn phạm slide 29 để: Văn phạm trở thành đơn nghĩa Văn phạm trở thành đơn nghĩa phép * thực trước phép + * Chứng minh rằng, tất chuỗi nhị phân sinh văn phạm chia hết cho x → 11 | 1001 | x0 | xx Văn phạm có sinh chuỗi nhị phân chia hết cho hay không? TRƯƠNG XUÂN NAM 31 Câu hỏi thảo luận Cho văn phạm: S → S => W | W , E a Hãy kí hiệu thuộc văn phạm, kí hiệu terminal, kí hiệu nonterminal b Hãy khử đệ quy trái cho văn phạm Khử đệ quy trái cho văn phạm G gồm luật: X→Ya|b Y→Zb|Yc Z→X|c TRƯƠNG XUÂN NAM 32 ... Phân tích top-down Phân tích bottom-up Phân tích CYK Phân tích Earley Những cách tiếp cận bước: cố gắng sinh automat đẩy xuống để dùng automat đốn nhận chuỗi Phân tích LL (top-down) Phân... dụng BNF (Backus-Naur Form) để biểu diễn cú pháp, cách viết dễ đọc hoàn toàn tương đương với VPPNC = | | “(“ “)” TRƯƠNG XUÂN NAM 20 BNF (Backus-Naur Form) Quy... phạm Lớp 0: unrestricted grammars (văn phạm tự do) Lớp 1: context-sensitive grammars (văn phạm cảm ngữ cảnh) Lớp 2: context-free grammars (văn phạm phi ngữ cảnh) Lớp 3: regular grammars (văn