• Bài giảng Chương trình dịch - Bài 6: Sinh mã trung gianBài giảng Chương trình dịch - Bài 6: Sinh mã trung gian

    Dãy các lệnh được biểu 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

    pdf27 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 771 | Lượt tải: 0

  • Bài giảng Chương trình dịch - Bài 5: Phân tích ngữ nghĩaBài giảng Chương trình dịch - Bài 5: Phân tích ngữ nghĩa

    Văn phạm sau sinh ra một chương trình, biểu diễn bởi một ký hiệu chưa kết thúc P chứa một chuỗi các khai báo D và một biểu thức đơn giản E. • Các kiểu cơ sở: char, integer và type-error • Mảng bắt đầu từ 1. Chẳng hạn array[256] of char là biểu thức kiểu (1.256, char) • Kiểu con trỏ ↑T là một biểu thức kiểu pointer(T).

    pdf24 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 775 | Lượt tải: 0

  • Bài giảng Chương trình dịch - Bài 4: Phân tích cú phápBài giảng Chương trình dịch - Bài 4: Phân tích cú pháp

    Bảng này được sử dụng như sau: – Nếu M[A,a] là rỗng thì bỏ qua token a. – Nếu M[A,a] là "synch" thì lấy A ra khỏi Stack nhằm tái hoạt dộng quá trình phân tích. – Nếu một token trên đỉnh Stack không phù hợp với token trong dòng nhập thì lấy token ra khỏi Stack.

    pdf85 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 926 | Lượt tải: 0

  • Bài giảng Chương trình dịch - Bài 3: Phân tích từ vựngBài giảng Chương trình dịch - Bài 3: Phân tích từ vựng

    Đặc tả của LEX: Khai báo %% Quy tắc dịch %% Các thủ tục phụ 100 Bao gồm khai báo biến, hằng và các định nghĩa chính quy. Có dạng pi {action i }. pi là các biểu thức chính quy, action i là đoạn chương trình mô tả hành động của bộ phân tích từ vựng thực hiện khi pi tương ứng phù hợp với trị từ vựng. là sự cài đặt các hành động trong phần ...

    pdf104 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 1076 | Lượt tải: 0

  • Bài giảng Chương trình dịch - Bài 2: Chương trình dịch đầu tiênBài giảng Chương trình dịch - Bài 2: Chương trình dịch đầu tiên

    Dạng đặc biệt của phân tích cú pháp từ trên xuống là phương pháp đoán nhận trước. Phương pháp này sẽ nhìn trước một ký hiệu nhập để quyết định chọn thủ tục cho ký hiệu không kết thúc tương ứng

    pdf59 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 687 | Lượt tải: 0

  • Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 9: Sinh mã đíchBài giảng Nguyên lý ngôn ngữ lập trình - Chương 9: Sinh mã đích

    1. Gọi hàm getreg để xác định vị trí L nơi lưu giữ kết quả của phép tính y op z. L thường là thanh ghi nhưng nó cũng có thể là một vị trí nhớ. 2. Xác định địa chỉ mô tả cho y để từ đó xác định y’, một trong những vị trí hiện hành của y. Chúng ta ưu tiên chọn thanh ghi cho y’nếu cả thanh ghi và vị trí nhớ đang giữ giá trị của y. Nếu giá trị của ...

    pdf20 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 692 | Lượt tải: 0

  • Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 8: Sinh mã trung gianBài giảng Nguyên lý ngôn ngữ lập trình - Chương 8: Sinh mã trung gian

    1. Ðánh giá biểu thức. 2. Tùy một giá trị trong danh sách các case bằng giá trị của biểu thức. Nếu không tìm thấy thì giá trị default của biểu thức được xác định. 3. Thực hiện các lệnh kết hợp với giá trị tìm được để cài đặt.

    pdf18 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 698 | Lượt tải: 0

  • Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 7: Môi trường thời gian thực hiệnBài giảng Nguyên lý ngôn ngữ lập trình - Chương 7: Môi trường thời gian thực hiện

    Cấu trúc đơn giản, dễ cài đặt nhất cho bảng ký hiệu là danh sách tuyến tính của các mẩu tin. Ta dùng một mảng hoặc nhiều mảng tương đương để lưu trữ tên và các thông tin kết hợp với chúng. Các tên mới được đưa vào trong danh sách theo thứ tự mà chúng được phát hiện. Vị trí của mảng được đánh dấu bởi con trỏ available chỉ ra một ô mới của bảng s...

    pdf26 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 776 | Lượt tải: 0

  • Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 6: Kiểm tra kiểuBài giảng Nguyên lý ngôn ngữ lập trình - Chương 6: Kiểm tra kiểu

    6.1. Viết các biểu thức kiểu cho các kiểu dữ liệu sau đây: a) Một mảng của các con trỏ có kích thước từ 1 đến 100, trỏ đến đối tượng các số thực. b) Mảng 2 chiều của các số nguyên, hàng có kích thước từ 0 đến 9, cột có chỉ số từ -10 đến 10. c) Các hàm mà miền định nghĩa là các hàm với các đối số nguyên, trị là con trỏ trỏ đến các số nguyên và...

    pdf7 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 852 | Lượt tải: 0

  • Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 5: Dịch trực tiếp cú phápBài giảng Nguyên lý ngôn ngữ lập trình - Chương 5: Dịch trực tiếp cú pháp

    5.4. Văn phạm sau đây sinh ra các biểu thức có được khi áp dụng một toán tử số học + cho các hằng số nguyên và số thực. Khi 2 số nguyên được công lại, kiểu kết quả là kiểu nguyên, ngược lại nó là kiểu số thực. E → E + T | T T → num • num | num a) Ðưa ra một định nghĩa trực tiếp cú pháp xác định kiểu của mỗi biểu thức con. b) Mở rộng định nghĩ...

    pdf20 trang | Chia sẻ: huongthu9 | Ngày: 18/08/2021 | Lượt xem: 793 | Lượt tải: 0