Bài giảng Chương trình dịch - Đại học Bách khoa Đà Nẵng
Nội dung giáo trình
CHƯƠNG 1. NHẬP MÔN CHƯƠNG TRÌNH DỊCH
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
CHƯƠNG 3. CÁC VẤN ĐỀ CƠ BẢN VỀ PHÂN TÍCH CÚ PHÁP
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
CHƯƠNG 5. PHÂN TÍCH NGỮ NGHĨA
CHƯƠNG 6. XỬ LÝ LỖI VÀ SINH MÃ
Thay bởi: A A | A A A A A A 185 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Đặt thừa số chung: Dạng (3): A | Có: first( )=first( )=first() nên first( ) first( )= first( ) (vi phạm đk1) 186 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Đặt thừa số chung: Dạng (3): A | Thay bởi: A A’ A’ | 187 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Bài tập: Biến đổi các VP sau thành LL(1) E E + T | T T T * F | F F (E) | id A A T | T T 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 188 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) B ài tậ p: Biến đổi các VP sau thành LL(1) AA S | A C | C C a S 0 Xây dựng VP LL(1) sản sinh ra danh định của một ngôn ngữ. 189 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) B ài tậ p: giải E TE’ E’+TE’ | T FT’ T’*FT’ | F(E) | id 190 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Bài tập: giải A AT | T A TA’ T 0 | .. | 9 A’ A | T 0|..|9 191 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Bài tập: giải Sx(1) và (2) biến đổi: A AA’ A’S | C A AA’|C ACA” ACA” A’S | C A”A’A”| A” SA” C a A’S|C A”CA”| S 0 Ca Ca S0 S0 192 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Bài tập: giải ID ID CC | ID CS |ID_ | CC| _ID| CC a | b CS 0 | 1 193 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.2. Vài phép biến đổi về VP LL(1) Bài tập: giải ACC A’ | _B BCCA’ | CS A’| _B A’CCA’| CSA’ | _A’| CCa CS0 194 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Cấu tạo: xi x2 x1 $ ai a2 a1 $ Bộ phân tích Bảng tiên đoán M Kết quả Stack Buffer 195 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Cấu tạo: Stack: x i x i-1 x 0 $ với x t ( ΣΔ ) Buffer: a i a i-1 a 0 $ với a t Σ Bảng tiên đoán M: Chỉ số hàng: A Δ Chỉ số cột: a Σ M[A,a]: A hoặc rỗng 196 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Hoạt động: Tại một thời điểm nếu: Ở stack là $ và buffer là $: x đúng CP VPG Ở đỉnh stack và buffer a Σ : đối sánh a Ở đỉnh stack là A Δ thì nếu: M[A,a]=A : triển khai A ở đỉnh stack M[A,a]=rỗng: xâu x không đúng CP VPG 197 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Giải thuật: Sử dụng: 1 stack và 1 buffer Khởi tạo: - stack là S$ - Buffer là x$ Lặp: If (stack là $) và (buffer là $) then x đúng cp và dừng vòng lặp 198 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Giải thuật: Else if (a Σ ở đỉnh stack và buffer) then đối sánh a ở đỉnh stack và buffer Else if (A Δ ở đỉnh stack) và (a Σ ở đỉnh buffer) then if (M[A,a]=A ) then triển khai A ở đỉnh stack Else x k0 đúng CP VPG, dừng vòng lặp 199 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Ví dụ: S aA AbA | c Xâu x: abbc có đúng CP của VP trên ? 200 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Ví dụ: a b c $ S SaA A A bA A c 201 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Ví dụ: STT Stack Buffer Hành động (0) S$ abbc$ Triển khai S aA (1) aA$ abbc$ Đối sánh (2) A$ bbc$ Triển khai A bA (3) bA$ bbc$ Đối sánh (4) A$ bc$ Triển khai A bA 202 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Ví dụ: STT Stack Buffer Hành động (5) bA$ bc$ Đối sánh (6) A$ c$ Triển khai A c (7) c$ c$ Đối sánh (8) $ $ Chấp nhận x đúng cp 203 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Xây dựng bảng tiên đoán M: 2 qui tắc sx A thì M[A,a]=A với afirst() sx A thì M[A,a]=A với a follow(A) 204 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán Xây dựng bảng tiên đoán M: Ví dụ: xây dựng bảng tiên đoán M cho vp: E TE’ E’+TE’ | T FT’ T’*FT’ | F(E) | id (1) (2) (3) (4) (5) (6) (7) (8) 205 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui Về mặt nguyên lý giống pp tiên đoán. Khác về lập trình: không tra bảng tiên đoán M mà mô phỏng trực tiếp. Thay stack bằng sự đệ qui trong chương trình. Một k/h chưa kết thúc: bdiễn bằng 1 biểu đồ cú pháp Một biểu đồ cú pháp: bdiễn bằng 1 CT con 206 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui Biểu đồ cú pháp: K/h kết thúc đặt: K/h chưa kết thúc đặt: Ví dụ: E TE’ E: E’ T 207 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui CT con biểu diễn cho biểu đồ cú pháp: Sự kết tiếp của các nút: sự kết tiếp của các đoạn ctcon Sự rẽ nhánh tạo thành cấu trúc chọn A: 1 2 3 208 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui CT con biểu diễn cho biểu đồ cú pháp: Lặp kiểm tra đk sau Lặp kiểm tra đk trước Nếu k/h tiếp=a thì Đọcký tự tiếp theo Ngược lại báo lỗi a 209 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui CT con biểu diễn cho biểu đồ cú pháp: Gọi ctcon B B 210 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui Thuật toán: k/htiep: ký hiệu kết thúc; function Dockh:ký hiệu kết thúc; {đọc k/hiệu tiếp trong x} Procedure Baoloi; {đưa thông báo lỗi} Procedure I ;{các Ctcon biểu diễn A Δ } 211 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui Thuật toán: Procedure PTCP; Begin k/htiep:=Dockh; S; if k/htiep=$ then x đúng CP else baoloi; End. 212 Giáo trình Kiến trúc máy tính và Hệ điều hành CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui Ví dụ: 213 Giáo trình Kiến trúc máy tính và Hệ điều hành
File đính kèm:
- bai_giang_chuong_trinh_dich_dai_hoc_bach_khoa_da_nang.ppt