. 98 TỔNG QUAN VỀ BIÊN DỊCH
và cả hai đều được nhặt ra khỏi chồng
copy đẩy một bản sao của giá trị ở đỉnh vào chồng Dịch các biểu thức
Đoạn mã chương trình dùng để ước lượng một biểu thức trên một máy chêng xếp cĩ liên quan mật thiết với ký pháp hậu vị cho biểu thức đĩ. Theo định nghĩa, dạng hậu vị của biểu thức # + # là sự ghép nối dạng hậu vị của E, dạng hậu vị của # và dấu +. Tương tự đoạn mã máy chồng xếp để ước lượng E#'+ # là ghép nối của đoạn mâ ước lượng E, đoạn mã ước lượng # và chỉ thị cộng các giá trị của chúng lại. Phiên dịch các biểu thức thành mã máy chồng xếp vì thế cĩ thể được thực hiện bằng cách kết hợp các
PHẦN 2.8 MÁY CHỒNG XẾP TRỪU TƯỢNG ¬--
chương trình dịch trong các Phần 2.6 và 3.7 lại.
Ở đây chúng ta tạo ra đoạn mã chương trình cho các biểu thức trong đĩ các vị trí dữ liệu đã được đánh địa chỉ bằng các ký hiệu. (Việc cấp phát vị trí đữ liệu cho các định danh sẽ được thảo luận trong Chương 7). Biểu thức a+b được dịch thành:
rvalue a rvalue b +
và đọc là: đẩy các nội dung ở các vị trí dữ liệu của a và b vào chồng xếp; rồi nhặt hai giá trị trên cùng của chẳng xếp ra, cộng chúng lại rồi đẩy kết quả vào chồng xếp.
Dịch các phép gán thành mã máy chồng xếp được thực hiện như sau: /-giá trị của định danh cân gán sẽ được đẩy vào chồng, biểu thức được ước lượng và r-giá trị của nĩ được gán cho định danh. Thí đụ phép gán
day := (1461*y) địv 4 + (153*m + 2) địv 5 +d (217)
được dịch thành đoạn mã trong Hình 3.32.
1value day puseh 2
push 1461 + tvalue v pusah 5 * div punh 4 + dịv xvalua d push 153 + xvalue m ” * Hình 2.32. Dịch phép gán day := (1461*y) địv 4 + (153*m + 2} dđív 5 + d. Những ghi nhận này cĩ thể được diễn tả một cách hình thức như sau. Mỗi chưa tận cĩ một thuộc tính ¿ cho biết bản dịch của nĩ. Thuộc tính /exeme của id cho biết đạng biểu diễn chuỗi của định danh.
simt — Ìđd := expr
{simÉt c= \1value' | iđiexeme || exprt || *:=' } Dịng điều khiến
Máy chồng xếp thực hiện các chỉ thị theo đúng thứ tự liệt kê trừ khi được yêu cầu thực hiện khác đi bằng câu lệnh nhảy cĩ điểu kiện hoặc khơng điều kiện. Cĩ một số tùy