Xây dựng một trình thông dịch cho một máy ngăn xếp (stack machine) đơn giản có biến nguyên. Chương trình gồm n dòng lệnh, mỗi dòng thuộc một trong các dạng:
PUSH k: đẩy số nguyên k vào đỉnh ngăn xếp.LOAD x: đẩy giá trị hiện tại của biến x vào đỉnh ngăn xếp (nếu biến x chưa từng được gán, giá trị mặc định là 0).STORE x: lấy giá trị ở đỉnh ngăn xếp ra (pop) và gán cho biến x.ADD, SUB, MUL, DIV: lấy hai giá trị trên đỉnh ngăn xếp ra (pop b trước, rồi pop a), tính a op b (riêng DIV là phép chia lấy phần nguyên kiểu Python, làm tròn xuống — toán tử //; đề đảm bảo b=0), rồi đẩy kết quả trở lại ngăn xếp.PRINT: in ra giá trị đang ở đỉnh ngăn xếp (không pop).Tên biến là chuỗi chữ cái thường không chứa khoảng trắng. Đề đảm bảo không có test nào khiến ngăn xếp bị pop khi đang rỗng.
Ví dụ: chương trình PUSH 3 / PUSH 4 / ADD / STORE x / LOAD x / PRINT in ra 7.
Dòng đầu chứa số nguyên n (0≤n≤1000). n dòng tiếp theo, mỗi dòng một lệnh đúng theo định dạng trên (các thành phần cách nhau bởi một khoảng trắng).
Mỗi lệnh PRINT được thực thi tạo ra một dòng in giá trị nguyên tương ứng, theo đúng thứ tự thực hiện. Nếu chương trình không có lệnh PRINT nào, không in gì cả.
Ví dụ:
Đầu vào:
0
Đầu ra:
Đầu vào:
6
PUSH 3
PUSH 4
ADD
STORE x
LOAD x
PRINT
Đầu ra:
7
Đang tải editor...