NGÔN NGỮ và PHƯƠNG PHÁP DỊCH THÀNH CÔNG - Chương 5: Sinh mã
lượt xem 9
download
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
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: NGÔN NGỮ và PHƯƠNG PHÁP DỊCH THÀNH CÔNG - Chương 5: Sinh mã
- IT4073:NGÔN NGỮ và PHƢƠNG PHÁP DỊCH THÀNH CÔNG Phạm Đăng Hải haipd@soict.hut.edu.vn
- Chƣơng 5: Sinh mã 1. Sinh mã trung gian 2. Sinh mã đích 3. Tối ƣu mã 11/18/2012 2
- 1. 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ỉ … 11/18/2012 3
- 1. 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 11/18/2012 4
- 1. 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 11/18/2012 5
- 1. 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 ET E.val = T.val T T1 * F T.val = T1.val * F.val TF 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 ) 11/18/2012 6
- 1. Sinh mã trung gian Chú giải cây suy dẫn 11/18/2012 7
- 1. 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 11/18/2012 8
- 1. 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 11/18/2012 9
- 1. 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 11/18/2012 10
- 1. 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 11/18/2012 11
- 1. 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 11/18/2012 12
- 1. 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) ET E.link := T.link T T1 * F T.link := mkNode(*,T1.link,F.link) TF 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) 11/18/2012 13
- 1. 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) 2 5 T.Link =mkNode(*,T1.Link,F.Link) F.Link =mkLeaf(5) F.Link =mkNode(+,E1.Link,T.Link) F.Link =mkLeaf(2) 11/18/2012 14
- 1. 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 11/18/2012 15
- 1. Sinh mã trung gian Ký pháp Ba lan sau (Reverse Polish notation) Ký pháp Ba lan: Là một ký hiệu toán học trong đó dấu đặt trƣớc/ sau toán hạng – Ký pháp thông thƣờng (giữa): 5 + 6 – Ký pháp Ba lan trƣớc: + 5 6 – Ký pháp Ba lan sau (ngƣợc): 5 6 + Mục đích: – Giảm thiểu bộ nhớ và dùng stack để tính toán Sử dung: – Trong một số loại máy tính tay 11/18/2012 16
- 1. Sinh mã trung gian Quy tắc dịch dạng trung tố dạng hậu tố Sản xuất Ký pháp hậu tố Ký pháp tiền tố E E+T EET+ E+ET ET ET ET TT*F TT F* T*T F TF TF TF F (E) FE FE F digit F digit F digit 11/18/2012 17
- 1. Sinh mã trung gian Ký pháp Ba lan sau Ví dụ 1 a+b*c+d EE+T EET+ E+T+T ET+T+ T+T+T T T+T+ F+T+T F T+T+ a+T+T a T+T+ a+T* F+T a T F*+T+ a+F* F+T a F F*+T+ a+b* F+T a b F*+T+ a+b* c+T a b c*+T+ a+b* c+F a b c*+F+ a+b* c+d 11/18/2012 a b c*+d+ 18
- 1. Sinh mã trung gian Ký pháp Ba lan sau Ví dụ 2 (a+b) * (c+d) ET ET+ T*F TF* F*F FF* (E) * F EF* (T + F) * F T F+F* (F + F) * F F F+F* (a + F) * F a F+F* (a + b) * F a b+F* (a + b) * (E) a b+E* (a + b) * (T + F) a b+TF+* (a + b) * (F + F) a b+FF+* (a + b) * (c + F) a b+cF+* (a + b) * (c + d) 11/18/2012 a b+cd+* 19
- 1. 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 11/18/2012 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
CHƯƠNG II: SQL
17 p | 175 | 53
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 1: Những khái niệm cơ bản
17 p | 327 | 31
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 4: Phân tích ngữ nghĩa
64 p | 191 | 29
-
IT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH
137 p | 175 | 23
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH
34 p | 142 | 22
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp
168 p | 185 | 17
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 5: Sinh mã
122 p | 111 | 17
-
Chương 2: Phân tích từ vựng
15 p | 234 | 16
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp
137 p | 126 | 15
-
NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 5: Sinh mã
79 p | 93 | 11
-
Bài giảng Chương trình dịch: Bài giảng 1 - Nguyễn Phương Thái
30 p | 122 | 10
-
Bài giảng Tin học đại cương - Chương 6: Thuật toán và ngôn ngữ lập trình
31 p | 34 | 7
-
Bài giảng Các phương pháp phân tích và thiết kế hệ thống hiện đại: Chương 2 - TS. Vũ Chí Cường
32 p | 56 | 6
-
Bài giảng Các phương pháp phân tích và thiết kế hệ thống hiện đại - Chương 2: Mô hình hóa hệ thống và ngôn ngữ UML
32 p | 35 | 4
-
Bài giảng Xử lý ngôn ngữ tự nhiên (Natural language processing): Bài 9 - Viện Công nghệ Thông tin và Truyền thông
74 p | 21 | 3
-
Bài giảng Xử lý ngôn ngữ tự nhiên (Natural Language Processing): Bài 6 - Lê Thanh Hương
12 p | 138 | 2
-
Bài giảng Xử lý ngôn ngữ tự nhiên (Natural Language Processing): Bài 7.1 - Lê Thanh Hương
4 p | 62 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn