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 logic bằng phân tích cú pháp đệ quy

    Xây dựng bộ phân tích cú pháp đệ quy cho biểu thức logic gồm các hằng 0 (sai), 1 (đúng), biến là một chữ cái in hoa (A–Z), phép phủ định ! (NOT), phép hội & (AND), phép tuyển | (OR) và dấu ngoặc đơn, theo văn phạm (độ ưu tiên tăng dần: | thấp nhất, rồi &, rồi ! cao nhất):

    E→T  (∣  T)∗T→F  (&  F)∗F→!F  ∣  (E)  ∣  VAR  ∣  0  ∣  1\begin{aligned} E &\to T\;(|\;T)^* \\ T &\to F\;(\&\;F)^* \\ F &\to !F \;\mid\; (E) \;\mid\; \text{VAR} \;\mid\; 0 \;\mid\; 1 \end{aligned}ETF​→T(∣T)∗→F(&F)∗→!F∣(E)∣VAR∣0∣1​

    Ví dụ: với A&B|C, A=1,B=0,C=1A=1,B=0,C=1A=1,B=0,C=1: (A∧B)∨C=(1∧0)∨1=1(A\wedge B)\vee C = (1\wedge0)\vee1 = 1(A∧B)∨C=(1∧0)∨1=1, in ra true.

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

      Dòng 1: biểu thức logic (có thể chứa khoảng trắng, bỏ qua khi phân tích). Dòng 2 (có thể rỗng): danh sách gán giá trị cho biến, dạng TÊN=giátrị (giátrị là 0 hoặc 1) cách nhau bởi khoảng trắng, ví dụ A=1 B=0 C=1. Biến không xuất hiện trong danh sách gán có giá trị mặc định là 0 (sai).

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

      In ra đúng true nếu biểu thức đúng, hoặc true false nếu sai (chữ thường).

    Ví dụ:

    Đầu vào:

    !(A&B)
    A=1 B=1

    Đầu ra:

    false
    

    Đầu vào:

    A&B|C
    A=1 B=0 C=1

    Đầu ra:

    true
    

    Đang tải editor...