Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Định giá biểu thức boolean bằng phân tích cú pháp đệ quy

    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\text{NOT} > \text{AND} > \text{OR}NOT>AND>OR (kết hợp trái):

    E→T  ( OR  T )∗E \to T \; ( \, \text{OR} \; T \, )^{*}E→T(ORT)∗ T→F  ( AND  F )∗T \to F \; ( \, \text{AND} \; F \, )^{*}T→F(ANDF)∗ F→NOT  F∣( E )∣TRUE∣FALSEF \to \text{NOT} \; F \mid ( \, E \, ) \mid \text{TRUE} \mid \text{FALSE}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,FE, T, FE,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\text{TRUE} \land \text{FALSE} = \text{FALSE}TRUE∧FALSE=FALSE, ¬FALSE=TRUE\lnot \text{FALSE} = \text{TRUE}¬FALSE=TRUE, TRUE∨FALSE=TRUE\text{TRUE} \lor \text{FALSE} = \text{TRUE}TRUE∨FALSE=TRUE. Kết quả in ra là TRUE.

    • Định dạng đầu vào:

      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).

    • Định dạng đầu ra:

      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...