Xây dựng trình thông dịch cho một ngôn ngữ mini gồm các câu lệnh, mỗi câu lệnh trên một dòng, thuộc một trong hai dạng:
ten_bien = bieu_thuc — tính giá trị bieu_thuc rồi gán cho biến ten_bien (biến gồm chữ cái/chữ số, bắt đầu bằng chữ cái). Biến chưa được gán trước đó có giá trị mặc định là 0.PRINT bieu_thuc — tính và in ra giá trị của bieu_thuc.bieu_thuc là một biểu thức số học trung tố chuẩn, gồm số nguyên, tên biến, dấu ngoặc (), các toán tử + - * / % (cộng, trừ, nhân, chia nguyên, chia lấy dư) và dấu trừ/cộng một ngôi (unary), với độ ưu tiên toán tử thông thường (*, /, % cao hơn +, -; các toán tử cùng độ ưu tiên tính từ trái sang phải). Phép chia / làm tròn về 0 (trunc), phép chia lấy dư % thoả a=(a/b)×b+(a%b) với cùng quy ước làm tròn đó (ví dụ −7/2=−3 và −7%2=−1).
Các câu lệnh được thực thi tuần tự. Nếu một phép chia (/ hoặc %) cho 0 xảy ra khi tính một biểu thức, in thêm dòng ERROR ngay sau các kết quả đã in trước đó rồi dừng thông dịch ngay lập tức (không xử lý các câu lệnh còn lại).
PRINT, đúng cú pháp mô tả ở trên (các token cách nhau bởi khoảng trắng).In ra, mỗi dòng một giá trị nguyên, kết quả của các lệnh PRINT theo đúng thứ tự xuất hiện. Nếu xảy ra chia cho 0, thêm dòng ERROR ở cuối rồi dừng (các PRINT sau đó không được in).
Ví dụ:
Đầu vào:
2
x = 2 + 3 * 4
PRINT x
Đầu ra:
14
Đầu vào:
2
x = (2 + 3) * 4
PRINT x
Đầu ra:
20
Đang tải editor...