NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 5: Sinh mã
Số trang: 79
Loại file: ppt
Dung lượng: 1.08 MB
Lượt xem: 10
Lượt tải: 0
Xem trước 8 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gianChương trình trung gian là một chương trình cho một máy trừu tượngNgôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là:Cây cú pháp Ký pháp Ba Lan sau (hậu tố)Mã 3 địa chỉ …
Nội dung trích xuất từ tài liệu:
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 5: Sinh mãIT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@soict.hut.edu.vn Chương 5: Sinh mã1. Sinh mã trung gian2. Sinh mã đích3. Tối ưu mã05/29/13 21. Sinh mã trung gian Giới thiệu • Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gian – Chương trình trung gian là một chương trình cho một máy trừu tượng • Ngôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là: – Cây cú pháp – Ký pháp Ba Lan sau (hậu tố) – Mã 3 địa chỉ … 05/29/13 31. Sinh mã trung gian Nội dung • Chương trình dịch định hướng cú pháp • Cây cú pháp • Ký pháp Ba lan sau • Mã 3 địa chỉ – Các dạng mã – Dịch trực tiếp cú pháp thành mã 3 địa chỉ – Sinh mã cho khai báo – Sinh mã cho lệnh gán – Sinh mã cho các biểu thức logic – Sinh mã cho các cấu trúc lập trình 05/29/13 41. Sinh mã trung gian Chương trình dịch định hướng cú pháp Mỗi ký hiệu VP liên kết với một tập thuộc tính: – Thuộc tính tổng hợp: • Giá trị của thuộc tính tại một nút trong cây được xác định từ giá trị của các nút con của nó. – Thuộc tính kế thừa: • Giá trị của thuộc tính được định nghĩa dựa vào giá tr ị nút cha và/hoặc các nút anh em của nó. • Tồn tại một tập luật ngữ nghĩa dùng để tính giá trị thuộc tính 05/29/13 51. Sinh mã trung gian Ví dụ Sản xuất Quy tắc ngữ nghĩa L → E return Print (E.val) E → E1+T E.val = E1.val + T.val E →T E.val = T.val T → T1 * F T.val = T1.val * F.val T →F T.val = F.val F → (E) F.val = E.val F → digit F.val = digit.lexval •Các ký hiệu E, T, F có thuộc tính tổng hợp val •Từ tố digit có thuộc tính tổng hợp lexval ( Được bộ phân tích từ vựng đưa ra ) 05/29/13 61. Sinh mã trung gian Chú giải cây suy dẫn 05/29/13 71. Sinh mã trung gian Nội dung • Chương trình dịch định hướng cú pháp • Cây cú pháp • Ký pháp Ba lan sau • Mã 3 địa chỉ – Các dạng mã – Dịch trực tiếp cú pháp thành mã 3 địa chỉ – Sinh mã cho khai báo – Sinh mã cho lệnh gán – Sinh mã cho các biểu thức logic – Sinh mã cho các cấu trúc lập trình 05/29/13 81. Sinh mã trung gian Cây cú pháp (Syntax tree) • Cây cú pháp (syntax tree) là dạng thu gọn của cây phân tích (parse tree) dùng để biểu diễn cấu trúc của ngôn ngữ • Trong cây cú pháp các toán tử và từ khóa không xuất hiện ở các nút lá mà đưa vào các nút trong. – Cha của các nút lá là các toán hạng tương ứng • Cây cú pháp có ý nghĩa dụng trong cài đặt – Cây phân tích (cú pháp) chỉ ý nghĩa về mặt logic 05/29/13 91. Sinh mã trung gian Cây cú pháp →Ví dụ 1 Ví dụ: S → If B Then S1 Else S2 Cây suy dẫn If Then Else If Then Else Cây cú pháp 05/29/13 101. Sinh mã trung gian Xây dựng cây cú pháp →Ví dụ 2 E→ E+T | T 5*2+4 E T→ T*F | F E + T F →(E) | num T F + 4 T * F * 4 F 2 5 2 5 Cây cú pháp Cây phân tích 05/29/13 111. Sinh mã trung gian Xây dựng cây cú pháp cho biểu thức • Các ký hiệu không kết thúc có thuộc tính tổng hợp link để lưu con trỏ, trỏ tới một nút trên cây cú pháp • Sử dụng các hàm ptr = mkLeaf(Num) ptr = mkNode(op, L, R) ptr ptr op Num L R 05/29/13 121. Sinh mã trung gian Cây cú pháp (Syntax tree) Sản xuất Luật ngữ nghĩa E → E1 + T E.link := mkNode(+,E1.link,T.link) E →T E.link := T.link T → T1 * F T.link := mkNode(*,T1.link,F.link) T →F T.link := F.link F → (E) F.link := E.link F → num F.link := mkLeaf(num) Cây cú pháp được xây dựng từ dưới lên trên – Sau khi phân tích xong một sản xu ất mới gọi lu ật ng ữ nghĩa tương ứng (duyệt thứ tự sau) 05/29/13 131. Sinh mã trung gian Xây dựng cây cú pháp →Ví dụ 5*2+4 E Cây phân tích E + T T F + T * F 4 F 2 * 4 5 F.Link =mkLeaf(4) ...
Nội dung trích xuất từ tài liệu:
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 5: Sinh mãIT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@soict.hut.edu.vn Chương 5: Sinh mã1. Sinh mã trung gian2. Sinh mã đích3. Tối ưu mã05/29/13 21. Sinh mã trung gian Giới thiệu • Bộ sinh mã trung gian chuyển chương trình nguồn sang chương trình tương đương trong ngôn ngữ trung gian – Chương trình trung gian là một chương trình cho một máy trừu tượng • Ngôn ngữ trung gian được người thiết kế trình biên dịch quyết định, có thể là: – Cây cú pháp – Ký pháp Ba Lan sau (hậu tố) – Mã 3 địa chỉ … 05/29/13 31. Sinh mã trung gian Nội dung • Chương trình dịch định hướng cú pháp • Cây cú pháp • Ký pháp Ba lan sau • Mã 3 địa chỉ – Các dạng mã – Dịch trực tiếp cú pháp thành mã 3 địa chỉ – Sinh mã cho khai báo – Sinh mã cho lệnh gán – Sinh mã cho các biểu thức logic – Sinh mã cho các cấu trúc lập trình 05/29/13 41. Sinh mã trung gian Chương trình dịch định hướng cú pháp Mỗi ký hiệu VP liên kết với một tập thuộc tính: – Thuộc tính tổng hợp: • Giá trị của thuộc tính tại một nút trong cây được xác định từ giá trị của các nút con của nó. – Thuộc tính kế thừa: • Giá trị của thuộc tính được định nghĩa dựa vào giá tr ị nút cha và/hoặc các nút anh em của nó. • Tồn tại một tập luật ngữ nghĩa dùng để tính giá trị thuộc tính 05/29/13 51. Sinh mã trung gian Ví dụ Sản xuất Quy tắc ngữ nghĩa L → E return Print (E.val) E → E1+T E.val = E1.val + T.val E →T E.val = T.val T → T1 * F T.val = T1.val * F.val T →F T.val = F.val F → (E) F.val = E.val F → digit F.val = digit.lexval •Các ký hiệu E, T, F có thuộc tính tổng hợp val •Từ tố digit có thuộc tính tổng hợp lexval ( Được bộ phân tích từ vựng đưa ra ) 05/29/13 61. Sinh mã trung gian Chú giải cây suy dẫn 05/29/13 71. Sinh mã trung gian Nội dung • Chương trình dịch định hướng cú pháp • Cây cú pháp • Ký pháp Ba lan sau • Mã 3 địa chỉ – Các dạng mã – Dịch trực tiếp cú pháp thành mã 3 địa chỉ – Sinh mã cho khai báo – Sinh mã cho lệnh gán – Sinh mã cho các biểu thức logic – Sinh mã cho các cấu trúc lập trình 05/29/13 81. Sinh mã trung gian Cây cú pháp (Syntax tree) • Cây cú pháp (syntax tree) là dạng thu gọn của cây phân tích (parse tree) dùng để biểu diễn cấu trúc của ngôn ngữ • Trong cây cú pháp các toán tử và từ khóa không xuất hiện ở các nút lá mà đưa vào các nút trong. – Cha của các nút lá là các toán hạng tương ứng • Cây cú pháp có ý nghĩa dụng trong cài đặt – Cây phân tích (cú pháp) chỉ ý nghĩa về mặt logic 05/29/13 91. Sinh mã trung gian Cây cú pháp →Ví dụ 1 Ví dụ: S → If B Then S1 Else S2 Cây suy dẫn If Then Else If Then Else Cây cú pháp 05/29/13 101. Sinh mã trung gian Xây dựng cây cú pháp →Ví dụ 2 E→ E+T | T 5*2+4 E T→ T*F | F E + T F →(E) | num T F + 4 T * F * 4 F 2 5 2 5 Cây cú pháp Cây phân tích 05/29/13 111. Sinh mã trung gian Xây dựng cây cú pháp cho biểu thức • Các ký hiệu không kết thúc có thuộc tính tổng hợp link để lưu con trỏ, trỏ tới một nút trên cây cú pháp • Sử dụng các hàm ptr = mkLeaf(Num) ptr = mkNode(op, L, R) ptr ptr op Num L R 05/29/13 121. Sinh mã trung gian Cây cú pháp (Syntax tree) Sản xuất Luật ngữ nghĩa E → E1 + T E.link := mkNode(+,E1.link,T.link) E →T E.link := T.link T → T1 * F T.link := mkNode(*,T1.link,F.link) T →F T.link := F.link F → (E) F.link := E.link F → num F.link := mkLeaf(num) Cây cú pháp được xây dựng từ dưới lên trên – Sau khi phân tích xong một sản xu ất mới gọi lu ật ng ữ nghĩa tương ứng (duyệt thứ tự sau) 05/29/13 131. Sinh mã trung gian Xây dựng cây cú pháp →Ví dụ 5*2+4 E Cây phân tích E + T T F + T * F 4 F 2 * 4 5 F.Link =mkLeaf(4) ...
Tìm kiếm theo từ khóa liên quan:
Phân tích cú pháp cú pháp quay lui phương pháp dịch phân tích bảng cú pháp tất định chương trình dịchTài liệu có liên quan:
-
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 242 0 0 -
Bài giảng Lập trình C căn bản: Chương 2 - Phạm Thế Bảo
31 trang 97 0 0 -
Dịch thì và thể ở thức trực chỉ từ tiếng Anh sang tiếng Việt
11 trang 38 0 0 -
Giáo trình Lập trình nâng cao: Phần 1 - Nguyễn Văn Vinh
126 trang 36 0 0 -
Bài giảng Điện tử tin học lớp 11: Bài 1
9 trang 33 0 0 -
Tập bài giảng Chương trình dịch
218 trang 32 0 0 -
Bài giảng Thực hành chương trình dịch: Bài 5 - Phạm Đăng Hải
66 trang 31 0 0 -
Nhập môn Chương trình dịch - Bài 1
17 trang 31 0 0 -
Một số cải tiến giải thuật earley cho việc phân tích cú pháp trong xử lý ngôn ngữ tự nhiên
10 trang 30 0 0 -
22 trang 30 0 0