... lại cho người viết chương trình. Trình biên dịch Chương trình đích Chương trình nguồn Hình 1.1 - Một trìnhbiêndịch 1. Mô hình phân tích - tổng hợp c a một trìnhbiêndịchChương ... Ngoài trìnhbiên dịch, chúng ta c thể c n dùng nhiều chươngtrình kh c nữa để tạo ra một chươngtrìnhđíchc thể th c thi đư c (executable). Ccchươngtrình đó gồm: Bộ tiền xử lý, Trìnhdịch ... phải c một trìnhbiêndịch th c hiện vi c chuyển đổi chươngtrình đó sang chương trình ở dạng ngôn ngữ đích. Chương này trình bày một c ch tổng quan về c u tr c của một trìnhbiêndịch và mối...
... c y c pháp đư c x c định từ cc giá trị c a cc thu c tính tại cc nút con c a nút đó. Ví dụ 2.7: Ðịnh nghĩa tr c tiếp c pháp cho vi cdịchcc biểu th ccc số c ch nhau bởi dấu + ho c ... theo c ch này, thứ tự in ra cc ký tự sẽ rất quan trọng. Chú ý rằng cc định nghĩa tr c tiếp c pháp đều c đ c điểm sau: chuỗi biểu diễn cho bản dịchc a ký hiệu chưa kết th c ở vế trái c a ... - Cc hành động dịch biểu th c 9-5+2 thành 9 5- 2 + 18II. DỊCH TR C TIẾP C PHÁP (Syntax - Directed Translation) Ðể dịch một kết c u ngôn ngữ lập trình, trong quá trình dịch, bộ biên dịch...
... c ch nhau bởi * ho c /. Chú ý rằng bất kỳ một biểu th c nào trong ngo c đều là factor, vì thế với cc dấu ngo c chúng ta c thể xây dựng cc biểu th c lồng sâu nhiều c p tuỳ ý. C pháp cc ... tự với c ch đặt dấu ngo c vào biểu th c như sau : (9 - 5) + 2 9 - ( 5 + 2) Bởi vì một chuỗi với nhiều c y phân tích c pháp thường sẽ c nhiều nghĩa, do đó khi biêndịchccchươngtrình ứng ... toán h c, cc toán tử * và / c độ ưu tiên cao hơn + và C pháp cho biểu th c : Văn phạm cho cc biểu th c số h c có thể xây dựng từ bảng kết hợp và ưu tiên c a c c toán tử. Chúng ta c thể bắt...
... match(‘-’) ; term( ) ; putchar (‘-’) ; } else break; } Chương trìnhCdịch biểu th c trung tố sang hậu tố Chương trình nguồn C hoàn chỉnh cho chươngtrìnhdịchc mã như sau : # include< ... phân tích từ vựng cho chươngtrìnhdịchcc biểu th c số h c. Hình sau đây gợi ý một c ch c i đặt giao diện c a bộ phân tích từ vựng đư c viết bằng C dưới dạng hàm lexan. Lexan đ c và đẩy cc ký ... c ng c thể c n đư c lưu lại cho c ng vi c ghi nhận lỗi bởi vì c n phải chỉ ra vị trí lỗi trong đoạn chương trình. Ðể tránh vi c phải quay lui, một số trìnhbiêndịch sử dụng c chế đ c trước...
... đỉnh Stack, kết quả c ng đư c lưu vào đỉnh STACK. Một phép toán ph c tạp hơn c thể c n phải đư c cài đặt như một loạt chỉ thị c a máy. Mã chươngtrình máy ảo cho một biểu th c số h c sẽ mô ... kh c đi bằng cc câu lệnh nhảy c điều kiện ho c không điều kiện. C một số cc tùy chọn dùng để mô tả ccđích nhảy : 1. Toán hạng làm chỉ thị cho biết vị trí đích. 2. Toán hạng làm chỉ ... +1) 4. Dịchcc biểu th c Ðoạn mã chươngtrình dùng để ư c lượng một biểu th c trên một máy ảo kiểu Stack c liên quan mật thiết với ký pháp hậu tố cho biểu th c đó. Ví dụ 2.16: Dịch phép...
... hợp cc chữ c i và số. 2. LD là tập hợp cc chuỗi bao gồm một chữ c i và một chữ số. 3. L4 là tập hợp tất ccc chuỗi 4 chữ c i. 4. L* là tâp hợp tất ccc chuỗi c a cc chữ c i bao ... cc kỹ thuật tạo ra bộ phân tích từ vựng. C thể, • Xây dựng cc lư c đồ cho cc biểu th c chính quy mô tả ngôn ngữ c n đư c viết trìnhbiên dịch. Sau đó chuyển đổi chúng sang một chươngtrình ... tích từ vựng). Cc mô tả và c ch th c hoạt động chi tiết c a c ng c Lex đư ctrình bày rõ hơn trong phần phụ l c A. M c tiêu c n đạt: Sau khi h c xong chương này, sinh viên phải nắm được...
... th c chính quy trong lex.l là cc đoạn chương trìnhC đư c chuyển sang lex.yy .c. Cuối c ng trìnhbiêndịchC sẽ dịch lex.yy .c thành chươngtrình đối tượng a.out, đó là bộ phân tích từ vựng c ... đồ dịch cho cc số không dấu trong Pascal C nhiều c ch để tránh cc đối sánh dư thừa trong cc sơ đồ dịch trên. Một c ch là viết lại cc sơ đồ dịch bằng c ch tổ hợp chúng thành một - một c ng ... chương trìnhC là lex.yy .c. Chươngtrình này bao gồm cc đ c tả về sơ đồ dịch đư c xây dựng từ cc biểu th c chính quy c a lex.l, kết hợp với cc thủ t c chuẩn nhận dạng trị từ vựng. Cc hành vi...
... tích c pháp c ng cc chế ghi nhận cc lỗi c pháp theo một phương th c linh hoạt và c khả năng ph c hồi đư ccc lỗi thường gặp để c thể tiếp t c xử lý phần c n lại c a chuỗi nhập. Chương ... Mô tả chi tiết về Yacc đư c tìm thấy ở phần phụ l c B. M c tiêu c n đạt: Sau khi h c xong chương này, sinh viên phải nắm đư c: • Cc phương pháp phân tích c pháp và cc chiến lư c ph c hồi ... • C ch tự c i đặt một bộ phân tích c pháp từ một văn phạm phi ngữ c nh x c định. • C ch sử dụng c ng c Yacc để sinh ra bộ phân tích c pháp. Kiến th c cơ bản: Sinh viên phải ccc kiến...
... kết th c bằng cc cạnh c nhãn X1X2 Xn Một c ch c thể, sơ đồ dịch đư c vẽ theo cc nguyên t c sau: 1. Mỗi ký hiệu chưa kết th c tương ứng với một sơ đồ dịch trong đó nhãn cho cc cạnh ... id Một chươngtrình phân tích c pháp dự đoán đư c thiết kế dựa trên sơ đồ dịch cho cc ký hiệu chưa kết th c trong văn phạm. Nó sẽ c gắng so sánh cc ký hiệu kết th c với chuỗi nguyên liệu ... +ε E’ Hình 4.5 - Cc sơ đồ dịch cho cc ký hiệu văn phạm C c sơ đồ dịchc thể đư c đơn giản hóa bằng c ch thay sơ đồ này vào sơ đồ kh c, những thay thế này tương tự như những...
... tích c pháp Shift - Reduce Phân tích c pháp Shift - Reduce c gắng xây dựng một c y phân tích c pháp cho chuỗi nhập bắt đầu từ nút lá và đi lên hướng về nút g c. Ðây c thể xem là quá trình ... kết th c không ảnh hưởng gì đến vi c phân tích c pháp, nên chúng ta không c n phải phân biệt chúng. Giải thuật 4.5: Phân tích c pháp thứ b c toán tử Input: Chuỗi nhập w và bảng cc quan ... ⇒rm aAbcde ⇒rm abbcde (Dẫn xuất phải nhất là chuỗi cc thay thế ký hiệu chưa kết th c phải nhất) 2. Handle Handle c a một chuỗi là một chuỗi con hợp với vế phải c a luật sinh và nếu chúng...
... tập hợp cc m c LR(1) C = { I0, I1, , In } c thể ccc tập hợp cc m c có chung một hạt nhân. Ví dụ 4.27: Trong ví dụ 4.25, ta thấy trong họ tập hợp m c có một số cc m c có chung hạt ... thường đư c sử dụng trong th c tế bởi vì những bảng LALR thu đư c nói chung là nhỏ hơn nhiều so với cc bảng LR chính t c và phần lớn cc kết c u c pháp c a ngôn ngữ lập trình đều c thể đư c diễn ... else if action[s, a] = accept then return else error ( ) end Ví dụ 4.18: Hình sau trình bày cc hàm action và goto c a bảng phân tích c pháp LR cho văn phạm c a cc biểu th c số h c dưới...
... generator) hỗ trợ cho vi c xây dựng kỳ đầu c a một trìnhbiện dịch. Một trong những bộ sinh bộ phân tích c pháp là YACC (Yet Another Compiler - Compiler). Phiên bản đầu tiên c a Yacc đư c S .C. Johnson ... phạm mơ hồ cho kết c u biểu th c đ c tả đư c một c ch ngắn gọn và tự nhiên hơn bất kỳ một văn phạm không mơ hồ nào kh c. Văn phạm mơ hồ c n đư c dùng trong vi c tách biệt cc kết c u c pháp thường ... Yacc đư c cài đặt như một lệnh c a hệ UNIX và đã đư c dùng để c i đặt cho hàng trăm trìnhbiên dịch. 107 E Æ E + T | T T Æ T * F | F (2) F Æ (E) | id Văn phạm này x c định rằng + c ...
... thêm cc thủ t c kh c, chúng c thể đư cbiêndịch ho c đư c tải vào y.tab .C giống như mọi chươngtrìnhC kh c. 107 4.17. Viết một chươngtrình Yacc nhận chuỗi input là cc biểu th c số ... chứa chương trình phân tích c pháp LR nhờ lệnh cc y.tab .C - ly chúng ta thu đư c một chương trình đối tượng a.out th c hiện quá trìnhdịch đư c đ c tả bởi chươngtrình Yacc ban đầu. Nếu c n ... trên. Chươngtrình y.tab .C là một biểu diễn c a bộ phân tích c pháp LALR đư c viết bằng ngôn ngữ C cùng với cc thủ t cC kh c có thể do người sử dụng chuẩn bị. Bằng c ch dịch y.tab .C cùng...
... h c xong chương này, sinh viên phải nắm đư c: • Cc cách kết hợp cc luật sinh với cc luật ngữ nghĩa: Định nghĩa tr c tiếp c pháp và Lư c đồ dịch. • Biết c ch thiết kế chươngtrình – bộ dịch ... ở ccchương sau: 6, 8, 9. Hai c ch để kết hợp cc luật sinh với cc luật ngữ nghĩa đư ctrình bày trong chương là: Định nghĩa tr c tiếp c pháp và Lư c đồ dịch. Ở m c quan niệm, bằng c ch ... phạm), ta c n phải chú ý đến ý nghĩa c a chương trình. Như vậy, khi thiết kế một trìnhbiên dịch, ta không những chú ý đến văn phạm mà c n chú ý đến c ngữ nghĩa. Chương 5 trình bày cc cách biểu...
... chỉ c ý nghĩa về mặt logic. 3. Ðồ thị c hướng không tuần hoàn cho biểu th c (Directed Acyclic Graph - DAG) DAG c ng giống như c y c pháp, tuy nhiên trong c y c pháp cc biểu th c con ... Ðịnh nghĩa tr c tiếp c pháp để tạo c y c pháp cho biểu th cCc nút trên c y phân tích c pháp c nhãn là cc ký hiệu chưa kết th c E và T sử dụng thu c tính tổng hợp nptr để lưu con trỏ trỏ ... entryc Hình 5.9 - Xây dựng c y c pháp cho a - 4 + c Luật ngữ nghĩa cho phép tạo ra c y c pháp. C y c pháp c ý nghĩa về mặt c i đặt c n c y phân tích c pháp chỉ...