Nhập môn Chương trình dịch - Bài 1 ppsx
... $ 31, ($26) ,1 lda $30 ,-3 2($30) stq $26,0($30) stq $15 ,8($30) bis $30,$30, $15 bis $16 , $16 , $1 stl $1, 16( $15 ) lds $f1 ,16 ( $15 ) sts $f1,24( $15 ) ldl $5,24( $15 ) bis $5,$5,$2 s4addq $2,0,$3 ldl $4 ,16 ( $15 ) mull $4,$3,$2 ldl ... $16 ,0,$0 mull $16 ,$0,$0 addq $16 ,1, $16 mull $0, $16 ,$0 mull $0, $16 ,$0 ret $ 31, ($26) ,1 Mã máy chưa tối ưu lda $30 ,-3 2($30) stq $26,0...
Ngày tải lên: 24/07/2014, 08:21
... phải + 5+ +1 +2 43 (1 + 2 + (3 + 4)) + 5 Ví dụ Suy dẫn trái S E+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 ... phạm nhập nhằng (3) S → S + S | S * S | number Nếu xâu vào là 1 + 2 * 3 Suy dẫn 1: S S + S 1 + S 1 + S * S 1 + 2 * S 1 + 2 * 3 Suy dẫn 2: S S...
Ngày tải lên: 24/07/2014, 08:21
... III. Cải tiến chương trình phân tích từ vựng - Thêm vào các từ tố cho các câu lệnh for, switch … case - Thông báo lỗi từ vựng: chỉ ra vị trí xảy ra lỗi - Hồi phục lỗi: bỏ qua lỗi và dịch tiếp ... văn phạm thuộc lớp LL (1) . b, Viết cây suy dẫn của biểu thức 2 ^ 3 + 4 * 5 sử dụng văn phạm của phần a). Bài tập về nhà 1 (nộp bài vào ngày có buổi học của tuần thứ 2)...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 15 docx
... đúng ý đồ của người lập trình chưa? J[e 1 ] = (s 1 , s 2 ,…, s n ); e 1 ’ J[OP(e 1 , e 2 )] = (s 1 , s 2 ,…, s n , s 1 ’, s 2 ’,…, s n ’); OP(e 1 ’, e 2 ’) J[e 2 ] = (s 1 ’, s 2 ’,…, s n ’); e 2 ’ Ví ... CALL J[e f ] = (s 1 , s 2 ,…, s n ); e f ’ J[CALL(e f , e 1 )] = (s 1 , s 2 ,…, s n , s 1 ’, s 2 ’,…, s n ’, MOVE(TEMP(t), CALL(e f ‘, e 1 ’)); TEMP(t) J[e 1 ]...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 14 pps
... tả chính xác chương trình dịch cần làm gì – Có thể cài đặt dễ dàng – Có thể chứng minh tính đúng của chương trình dịch Các lệnh đã mô tả • E[v] = TEMP(v) • E[e 1 + e 2 ] = ADD([e 1 ], [e 2 ]) • ... [s], LABEL(f)) làm phẳng cây IR SEQ SEQ s 3 s 1 s 2 SEQ s 2 s 3 s 1 Nhập môn Chương trình dịch Học kì II 200 6-2 007 Bài 14 : Sinh mã trung gian (tiếp) Tổng kết •...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 13 pps
... Cách dịch • Vấn đề: nút MOVE không có giá trị, làm thế nào để dịch x = (y = 2)? e 1 = e 2 MOVE [e 2 ][e 1 ] ESEQ [e 1 ] e 1 = e 2 MOVE [e 2 ][e 1 ] Ví dụ n = 0; while (n < 10 ) { n = n + 1; } SEQ( MOVE(TEMP(n), ... địa chỉ của một tên trên bộ nhớ • VD: địa chỉ của một nhãn nhảy NAME(n) Nhập môn Chương trình dịch Học kì II 200 6-2 007 Bài 13 : Sinh mã trung g...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 12 pps
... : int A 2 ├ x : int A 2 ├ x*fact(x -1 ) : int A 2 ├ x : int A 2 ├ 0 : int A 2 ├ x == 0 : bool A 2 ├ 1 : int Nhập môn Chương trình dịch Học kì II 2006 – 2007 Bài 12 : Luật ngữ nghĩa (tiếp) Luật ngữ ... 0) return 1; else return x * fact(x -1 ) ; } A 1 = {fact: int int} A 2 = {fact: int int, x : int} A 2 ├ x : int A 2 ├ 1 : int A 2 ├ x - 1 : int A 2 ├ fact : int ...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 11 ppt
... Nhập môn Chương trình dịch Học kì II 2006 - 2007 Bài 11 : Luật ngữ nghĩa Ví dụ A ├ E 1 : int A ├ E 2 : int A ├ E 1 + E 2 : int (+) E 1 : int E 2 : int E 1 E 2 + : int Luật ngữ ... nghĩa • Với mọi ngữ cảnh A, biểu thức E, lệnh S 1 và lệnh S 2 ta có luật ngữ nghĩa A ├ if (E) S 1 else S 2 : T là đúng nếu A ├ E : bool A ├ S 1 : T A ├ S 2 : T Đánh giá kiểu if (b) 2 e...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 10 pptx
... kiểu • Cài đặt các biểu thức kiểu Nhập môn Chương trình dịch Học kì II 2006 – 2007 Bài 10 : Biểu thức kiểu Ví dụ: C++ • Kiểu cơ bản: int, char, … • Kiểu phức hợp: int [10 0], struct {int a, char b} • ... lập trình tự định nghĩa kiểu • VD: C++ typedef int int_array[ ]; class cView { … }; • int_array là một kiểu giống với int[ ] • Có thể có nhiều định nghĩa kiểu của cùng một k...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 9 pot
... i++) { boolean b = } { i: int, n: int } { i: int, n: int, b: boolean } ? Nhập môn Chương trình dịch Học kì II 200 6-2 007 Bài 09: Phân tích ngữ nghĩa ... hiện trong phạm vi (scope) của chương trình: bảng kí hiệu (symbol table) Cài đặt bảng kí hiệu (1) • Bảng kí hiệu cho phép kiểm tra kiểu của các tên trong chương trình class SymTab { Type lookup(String ... phạm vi biế...
Ngày tải lên: 24/07/2014, 08:21