Xét văn phạm biểu thức logic với các từ khóa TRUE, FALSE, AND, OR, NOT (không phân biệt hoa/thường) và dấu ngoặc đơn, theo thứ tự ưu tiên giảm dần NOT>AND>OR (kết hợp trái):
E→T(ORT)∗ T→F(ANDF)∗ F→NOTF∣(E)∣TRUE∣FALSE
Hãy cài đặt bộ phân tích cú pháp đệ quy (ba hàm tương ứng E,T,F) để định giá biểu thức và in ra kết quả. Dữ liệu vào đảm bảo luôn đúng văn phạm.
Ví dụ: NOT ( TRUE AND FALSE ) OR FALSE được định giá như sau: TRUE∧FALSE=FALSE, ¬FALSE=TRUE, TRUE∨FALSE=TRUE. Kết quả in ra là TRUE.
Một dòng duy nhất chứa biểu thức, trong đó mọi token (TRUE, FALSE, AND, OR, NOT, (, )) đều được phân tách với token liền kề bởi ít nhất một khoảng trắng (kể cả dấu ngoặc đơn).
In ra đúng một dòng: TRUE nếu biểu thức đúng, hoặc FALSE nếu biểu thức sai (in hoa).
Ví dụ:
Đầu vào:
FALSE AND TRUE
Đầu ra:
FALSE
Đầu vào:
TRUE
Đầu ra:
TRUE
Đang tải editor...