... một ngôn ngữ hướng giải pháp. 14 14 Trang 15§1.3 Chương trình biên dịch, Chương trình Hợp Ngữ, Chương trình Diễn dịch1.CT Phiên dịch Là một chương trình có thể phiên dịch mã CT viết bằng ngôn ngữ ... Trang 1Nhập môn Chương Trình DịchHoàng Anh Việt Viện CNTT&TT - ĐHBKHN Trang 2Chương I: Giới thiệu 2 Chương trình dịch Nguyên lý cơ bản của Ngôn ngữ lập trình và Thiết kế cấu tạo của chương trình ... giai đoạn: Biên dịch, Hợp dịch, Thực thi (chạy) 18 Trang 19Giai đoạn Biên dịchComputer CT Biên dịch CT nguồn CT mục tiêu Trang 20Giai đoạn thực thiTrang 214 Chương trình Diễn dịchDựa vào thứ
Ngày tải lên: 10/05/2021, 13:36
... thay đổi e1 sẽ làm thay đổi ý đồ của người lập trình • Cần lưu lại giá trị của e1 trước khi tính si’ J[e1] = (s1, s2,…, sn); e1’ J[e2] = (s1’, s2’,…, sn’); e2’ J[OP(e1, e2)] = (s1, s2,…, sn, ... gốc [...]... s2,…, sn); e1’ J[e2] = (s1’, s2’,…, sn’); e2’ J[OP(e1, e2)] = (s1, s2,…, sn, s1’, s2’,…, sn’); OP(e1’, e2’) • Luật này đã thể hiện đúng ý đồ của người lập trình chưa? Cú pháp điều ... Nhập môn Chương trình dịch Học kì II 2006 – 2007 Bài 15: Làm phẳng cây IR Làm phẳng cây IR • Cây IR vẫn còn cấu trúc đệ quy
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
... Nhập môn Chương trình dịch Học kì II 2006-2007 Bài 14: Sinh mã trung gian (tiếp) Sinh mã trung gian • Sử dụng cú pháp điều ... nút con • Cú pháp điều khiển – Mô 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 Sinh mã lệnh if if (e) s SEQ CJUMP LABEL(t) ... if-else if (e) s 1 else s 2 SEQ CJUMP LABEL(t) [s 1 ] LABEL(f) [e] NAME(t) NAME(f) s 2 LABEL(end)JUMP NAME(end) [if (e) s 1 else s 2 ] = SEQ( CJUMP([e], NAME(t), NAME(f)), LABEL(t), [s 1 ], JUMP(NAME(end)),
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 11
... Trang 1Nhập môn Chương trình dịchHọc kì II 2006 - 2007 Bài 11: Luật ngữ nghĩa Trang 2Luật ngữ nghĩa• Bảng kí hiệu đánh dấu các ... giá kiểu (kiểm tra kiểu) là quá trình lần ngược cây cú pháp dựa vào các luật Trang 10Ví dụA ├ E1 : int A ├ E2 : int A ├ E1 + E2 : int (+) E1 : int E2 : int Trang 11Cài đặt luật ngữ nghĩa• Cài đặt ... lệnh S1 và lệnh S2 ta có luật ngữ nghĩa A ├ if (E) S1 else S2 : T là đúng nếu A ├ E : bool A ├ S1 : T A ├ S2 : T Trang 8Viết luật ngữ nghĩaA ├ E : bool A ├ S1 : T A ├ S2 : T A ├ if (E) S1 else
Ngày tải lên: 08/05/2021, 19:36
Bài giảng Nhập môn chương trình dịch: Chương 4 (tt) - Hoàng Anh Việt
... lên (1)Trang 9Phân tích dưới lên (2)Trang 10Phân tích dưới lên (3)(1+2+(3+4))+5 (E+2+(3+4))+5 (S+2+(3+4))+5 (S+E+(3+4))+5 … • Phân tích dưới lên có nhiều thông tin hơn khi 2 E 3 4 5 Trang 11Phân ... lượng trạng thái) Trang 18• k : Số lượng ký hiệu nhập được xét tại mỗi thời điểm dùng để đưa ra quyết định phân tích Khi không đề cập đến k, hiểu ngầm là k = 1 18 Trang 194.2 Bộ phân tích cú pháp ... dòng nhập từ trái sang phải. 19 Nhược điểm? Trang 20Cấu tạo bộ phân tích LR20 Mô hình bộ phân tích LR Trang 21Cấu tạo bộ phân tích LR• Stack được dùng để chứa chuỗi ký hiệu có dạng s0X1s1X2…Xmsm,
Ngày tải lên: 10/05/2021, 13:35
Bài giảng Nhập môn chương trình dịch: Chương 6 - Hoàng Anh Việt
... diễn bằng nút SEQ trong biểu diễn IR • Nếu [s1] và [s2] là biểu diễn IR của nút s1 và s2 • thì SEQ([s1], [s2]) là biểu diễn IR của s1; s2 SEQ [s1] [s2]s1; s2 Trang 23…Stack Trang 24Phép gán• Phép ... chỉ e • CJUMP(e, l1, l2): nhảy đến l1 hoặc l2 tuỳ thuộc vào giá trị của e là true hoặc false • LABEL(n): tạo ra nhãn có tên n Trang 17Ví dụ n = 0;while (n < 10) { Trang 18Cấu trúc của IR• ... Trang 11Toán tử• Máy trừu tượng có nhiều phép toán • Tính giá trị của e1 và e2, sau đó áp dụng phép toán với các giá trị này • e1 và e2 phải là hai nút có giá trị • Có thể tính giá trị e1 và e2
Ngày tải lên: 10/05/2021, 13:36
Bài giảng Nhập môn chương trình dịch: Chương 2 - Hoàng Anh Việt
... Publishing Company, 1986 [3] Trình Biên Dịch - Phan Thị Tươi (Trường Ðại học kỹ thuật Tp.HCM) – NXB Giáo dục, 1998 [4] Compilers course, CS 143 summer 2010, Standford University 4 Trang 71.1 Định nghĩa ... dụ: Bộ luật cú pháp của CFG: 18 Trang 201.4 Sự nhập nhằng của văn phạm• 1 Văn phạm sinh ra nhiều hơn 1 cây phân tích cú pháp cho cùng 1 chuỗi nhập thì gọi là văn phạm nhập nhằng • Ví dụ văn phạm ... rest1 Trang 402.5 Lược đồ dịch• Ví dụ: Lược đồ dịch của văn phạm G: Trang 412.5 Lược đồ dịchTrang 433 Phân tích cú pháp• Là quá trình xác định xem chuỗi ký hiệu kết thúc có thể được sinh ra từ 1
Ngày tải lên: 10/05/2021, 13:36
Bài giảng Nhập môn chương trình dịch: Chương 4 - Hoàng Anh Việt
... 48 Trang 473.2.1 Xây dựng sơ đồ dịch cho PTDD• Các sơ đồ dịch tương ứng: Trang 483.2.1 Xây dựng sơ đồ dịch cho PTDD• Một chương trình PTCP dự đoán xây dựng dựa trên các sơ đồ dịch cho các ký ... sinh bộ PTCP Trang 142 Văn phạm của ngôn ngữ lập trình2.1 Đặc tả cú pháp của ngôn ngữ 2.2 Văn phạm nhập nhằng 2.3 Loại bỏ nhập nhằng 14 Trang 152.1 Đặc tả cú pháp của ngôn ngữ• Vấn đề: Làm thế ... if_stmt while_stmt Trang 101 Vai trò của bộ phân tích cú pháp• Kiểm tra tính đúng đắn về cú pháp của chương trình nguồn • Xác định chức năng của các thành phần trong chương trình nguồn I gave him
Ngày tải lên: 10/05/2021, 13:36
Tiểu luận môn chương trình dịch Viết trình biên dịch để dịch 1 đoạn chương trình
... exp → exp or exp1 | exp1 exp1 → exp1 and term | term term → term relop1 term1 | term1 term1 → term1 relop2 term2 | term2 ! 1 8 19 2 0 15 13 14 12 17 21 11 } Trang 10term2 → term2 op1 term3| term3term3 ... end, $ goto(I11, dec_var) -I 15: dec_var → type id id1 semicolon dec_var., void goto(I11, type) ≡ I3 goto(I12, id1) -I 16: id1 → coma id id1., semicolon goto(I12, coma) ≡ I8, goto(I12, open) ≡ ... goto(I12, open) ≡ I9 goto(I13, close) -I 17: id1 → open num close id1, semicolon id1 → coma id id1, semicolon id1 → open num close id1, semicolon id1 → , semicolon Trang 15I 19: block → begin assign_list
Ngày tải lên: 20/03/2015, 23:13
Bài tập lớn môn chương trình dịch Viết trình biên dịch dể dịch 1 doạn chuong trình
... hiệu kết thúc: 1) VAR 2) COLON 3) TYPE 4) SEMI //( ; ) 5) ID 6) COMMA //(,) 7) BEGIN 8) END 9) ASSGN //(:=) 10) FOR 11) TO 12) DO 13) AND 14) OR 15) NOT 16) OP1 17) OP2 18) NUM 29) NUMREAL ... Thành Nam Nguyễn Hồng Linh Nguyễn Thị Xuân Mai Hà Nôi, Tháng 12 năm 2012 Đề Tài 8: Trang 2Viết trình biên dịch dể dịch 1 doạn chuong trình gồm các phát biểu sau: - Phát biểu gán, for trong Pascal ... LPAR //( 21) RPAR //) 22) DOT 23) $ C Ký hiệu không kết thúc: 1) Program 2) Kbao 3) Body 4) n_kbao Trang 65) Kbkieu6) n_ID 7) n_lenh 8) lenh 9) n_gan 10) l_for_do 11) r_body 13) term 14) factor
Ngày tải lên: 20/03/2015, 23:29
Tiểu luận môn chương trình dịch Viết trình biên dịch để dịch 1 đoạn chương trình
... ID, BEGIN, IF } 11.FIRST(bieu_thuc) = {NOT, LPAR, ID, NUMINT, NUMFLOAT, OP1} 12.FIRST(bt1) = {NOT, LPAR} 13.FIRST(bt2) = { ID, NUMINT, NUMFLOAT, LPAR, OP1} 14.FIRST(bt3) = {LPAR} 15.FIRST(bt4) ... 8t.value=install_num();exitflag=1;Trang 11case',': state=35; break;case'/': state=36; break;case'*': state=37; break;default: state=fail(29);}Trang 121 main → MAIN LPAR RPAR body2 body → BEGIN ct END Trang 1311.n_id ... NUMFLOAT, LPAR, OP1} 16.FIRST(exp) = {ID, NUMINT, NUMFLOAT, LPAR, OP1} 17.FIRST(term) = {ID, NUMINT, NUMFLOAT, LPAR, OP1} 18.FIRST(factor) = {ID, NUMINT, NUMFLOAT, LPAR, OP1} 14.FOLLOW(bt3) =
Ngày tải lên: 20/03/2015, 23:30
GIÁO TRÌNH MÔN CHƯƠNG TRÌNH DỊCH PHẦN 5
... 2.1 Mã máy định vị tuyệt đối. Một chương trình mã máy tuyệt đối có các lệnh mã máy được định vị tuyệt đối Chương trình dịch xác định hoàn toàn chương trình đối tượng này. Mã được một chương trình ... Như vậy, mã đích cho các chương trình con: /* mã cho c*/ Trang 5100: ACTION 1120: MOV #140, 364 /* lưu địa chỉ trả về 140 */ 132: GOTO 200 /* gọi p */ 140: ACTION 2 160: HALT /* mã cho p ... chương trình con nằm trên đỉnh Stack Khi lời gọi của chương trình con xuất hiện, chương trình bị gọi được cấp phát, SP được tăng lên một giá trị bằng kích thước mẩu tin hoạt động của chương trình
Ngày tải lên: 03/10/2013, 12:20
Nhập môn Chương trình dịch - Bài 1 ppsx
... $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 $3 ,16 ( $15 ) addq $3 ,1, $4 mull $2,$4,$2 ldl $3 ,16 ( $15 ) ... 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 $3 ,16 ( $15 ) addq $3 ,1, $4 ... gỡ rối chương trình với chương trình dịch viết sai – Chương trình dịch chương trình Các khái niệm chi phí, bảo mật – Trong môn học này, ta nghiên cứu kỹ thuật để viết chương trình dịch Dịch...
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 MOVE e1 = e2 [e1] [e2] • Vấn đề: nút MOVE giá trị, làm để dịch x = (y = 2)? ESEQ MOVE e1 = e2 [e1] [e1] [e2] Phép gán • Như vậy, [e1] phải chạy lần, cần lưu lại giá trị [e1] ESEQ SEQ e1 ... + e1 e2 [e1] [e2] • Kí hiệu [e] biểu diễn IR nút e cú pháp Câu lệnh • Dãy lệnh biểu diễn nút SEQ biểu diễn IR • Nếu [s1] [s2] biểu diễn IR nút s1 s2 • SEQ([s1], [s2]) biểu diễn IR s1; s2 s1; ... trừu tượng có nhiều phép toán OP(e1, e2) OP e1 e2 • Tính giá trị e1 e2, sau áp dụng phép toán với giá trị • e1 e2 phải hai nút có giá trị • Có thể tính giá trị e1 e2 theo thứ tự MEM • Nút MEM đại...
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
... gọi hàm E(E1, E2, … En) A ├ E : T1 x T2 x … x Tn Tr A ├ Ei : Ti (i = 1, 2, … n) A ├ E(E1, E2, … En) : Tr (func call) Luật ngữ nghĩa: định nghĩa hàm • C/C++: hàm viết dạng Tr f(T1 a1, … Tn an) ... kiểu dãy lệnh sau có kiểu A ├ S1 : T1 A ├ (S2, S3, … Sn) : Tn (block) A ├ (S1, S2, … Sn) : Tn • Làm S1 lệnh khai báo? Luật ngữ nghĩa: dãy lệnh (block) A ├ T id : T1 (lệnh khai báo) A, id : T ├ ... có kiểu A, a1 : T1, …, an : Tn ├ E : Tr Ví dụ: hàm đệ quy int fact(int x) { if (x == 0) return 1; else return x * fact(x -1) ; } A2 ├ x : int A2 ├ : int A2 ├ x == : bool A2 ├ : int A1 = {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
... thức E, lệnh S1 lệnh S2 ta có luật ngữ nghĩa A ├ if (E) S1 else S2 : T A ├ E : bool A ├ S1 : T A ├ S2 : T Viết luật ngữ nghĩa Tiền đề A ├ E : bool A ├ S1 : T A ├ S2 : T A ├ if (E) S1 else S2 : ... xuất văn phạm • Đánh giá kiểu (kiểm tra kiểu) trình lần ngược cú pháp dựa vào luật Ví dụ A ├ E1 : int E1 A ├ E2 : int (+) : int E2 + A ├ E1 + E2 : int E1 : int : int E2 Cài đặt luật ngữ nghĩa • Cài ... E.typeCheck(A) Expr e1, e2; A├E:T Type typeCheck(SymTab A) { Type t1 = e1.typeCheck(A), t2 = e2.typeCheck(A); if (t1 == Int && t2 == Int) return Int; else throw new TypeCheckError(“+”); } A ├ E1 : int A...
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
... báo kiểu: typedef, class Hệ thống kiểu (1) • Mỗi ngôn ngữ lập trình có hệ thống kiểu riêng • Mỗi kiểu giới hạn liệu • VD: int = [-2 31, 2 31] , char = [ -12 8, 12 7] • Các kiểu liệu phức hợp tạo từ kiểu ... char, … • Kiểu phức hợp: int [10 0], struct {int a, char b} • Biểu thức kiểu: T kiểu T[ ] kiểu với T Hệ thống kiểu (2): định nghĩa kiểu • Một số ngôn ngữ cho phép người lập trình tự định nghĩa kiểu ... C/C++/Java/Pascal Biểu thức kiểu: Cấu trúc • Là biểu thức kiểu phức tạp • Biểu thức kiểu có dạng {id1: T1, id2: T2, …} với id T tên kiểu trường • Ví dụ – C/C++: struct { int a; float b; } tương ứng...
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
... • Nộp tập lập trình số 1: tuần sau Phân tích ngữ nghĩa • Tìm tất lỗi lại chương trình nguồn – Khai báo biến – Kiểm tra kiểu (kiểu tĩnh) • Thiết lập thông tin cần thiết cho bước dịch sau – Kiểu ... (thông tin kiểu) class Add extends Expr { Expr e1, e2; Type typeCheck() throws SemanticError { Type t1 = e1.typeCheck(), t2 = e2.typeCheck(); if (t1 == Int && t2 == Int) return Int; else throw ... phạm vi biến (scope) class Add extends Expr { Expr e1, e2; Type typeCheck(SymTab s) { Type t1 = e1.typeCheck(s), t2 = e2.typeCheck(s); if (t1 == Int && t2 == Int) return Int; else throw new TypeCheckError(“+”);...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 8 ppt
... } } Chương trình chương trình dịch (2) Compiler.compile() cú pháp Parser.parse() từ tố Lexer.getToken() ký tự InputStream.read() Cây cú pháp Là kết phân tích cú pháp Là dạng thể chương trình ... chương trinh sinh phân tích cú pháp sử dụng phương pháp LALR (1) Thứ tự ưu tiên kết hợp cho phép viết cú pháp ngôn ngữ dễ dàng Văn phạm ngôn ngữ gần với cách viết thông thường Chương trình chương ... expr ::= expr:e1 PLUS expr:e2 {: RESULT = new Add(e1,e2); :} Ngăn xếp phân tích cú pháp lưu giá trị RESULT vế trái Num (1) (1 (E (E + (E + E (E (E) E E + E + E E RESULT = new Num (1) RESULT = new...
Ngày tải lên: 24/07/2014, 08:21
Nhập môn Chương trình dịch - Bài 7 pptx
... ((L),y) (S,y) (L,y) (L,y) (L,y) (L,S) (L) (L) S ngăn xếp 1( 3 1( 3(3 1( 3(3x2 1( 3(3S7 1( 3(3L5 1( 3(3L5)6 1( 3S7 1( 3L5 1( 3L5,8 1( 3L5,8y2 1( 3L5,8S9 1( 3L5 1( 3L5)6 xâu vào ((x),y)$ (x),y)$ x),y)$ ),y)$ ),y)$ ... = (sn, a) = gạt s (s1 x1 s2 x2 … sn-r xn-r … sn -1 xn -1 sn a s) – Thu gọn X , chuyển tới trạng thái s với • = xn-r … xn-2 xn -1 • s = (sn-r, X) = goto (sn-r, X) (s1 x1 s2 x2 … sn-r X s) ... tích LALR (1) LR (1) : Có nhiều trạng thái SLR 10 0 trạng thái LR (1) 10 00 trạng thái Kết hợp trạng thái LR (1) có sản xuất vị trí dấu chấm () giống lại thành trạng thái LALR (1) = SLR...
Ngày tải lên: 24/07/2014, 08:21