Cho văn phạm biểu thức số học:
ETF→T ((+∣−) T)∗→F ((∗∣/) F)∗→(+∣−) F∣( E )∣soˆˊ nguyeˆn khoˆng aˆmnghĩa là cho phép dấu +/- một ngôi lặp lại nhiều lần trước một nhân tố (ví dụ ---5 nghĩa là −(−(−5))=−5).
Viết bộ phân tích cú pháp đệ quy (recursive descent) để tính giá trị của biểu thức. Phép chia / là phép chia lấy thương nguyên làm tròn về phía 0 (như toán tử / giữa hai số nguyên trong C/Java), không phải phép chia sàn (floor) của Python. Ví dụ: (−7)/2=−3 (không phải −4).
Dòng đầu là số nguyên n (0≤n≤1000) — số biểu thức. n dòng tiếp theo, mỗi dòng một biểu thức không chứa dấu cách, gồm chữ số, các toán tử + - * /, dấu ngoặc ( ). Biểu thức được đảm bảo hợp lệ theo văn phạm trên, và mọi phép chia đều có số chia khác 0.
In ra n dòng, mỗi dòng là một số nguyên — kết quả của biểu thức tương ứng theo đúng thứ tự đầu vào.
Ví dụ:
Đầu vào:
3
(1+2)*(3+4)
-3+5
7/2
Đầu ra:
21
2
3
Đầu vào:
1
3+4*2
Đầu ra:
11
Đang tải editor...