JavaScript is required

Cho văn phạm G gồm các luật sinh: E->EE*; E->EE+; E->a; E->b. Chuỗi nào sau đây được sinh ra bởi G

A.

A. a++b*a

B.

B. aab++a

C.

C. a+bb*

D.

D. ab*bb+

Trả lời:

Đáp án đúng: B


Văn phạm G cho phép tạo ra các biểu thức sử dụng toán tử * và + với các toán hạng a và b. Chúng ta cần kiểm tra chuỗi nào có thể được sinh ra từ văn phạm này. * **A. a++b*a:** Chuỗi này không thể sinh ra từ G vì có hai toán tử + liền nhau. Văn phạm chỉ cho phép một toán tử giữa hai biểu thức E. * **B. aab++a:** Chuỗi này có thể sinh ra từ G. Ta có thể phân tích như sau: E -> EE+ -> aE+ -> aaE++ -> aab++ -> aab++a (hoặc một cách khác, E -> EE+ -> EE+E -> aE+E -> aaE++E -> aab++E -> aab++a). * **C. a+bb*:** Chuỗi này không thể sinh ra từ G vì toán tử + đứng trước hai toán hạng b liên tiếp mà không có biểu thức E nào khác ở giữa. * **D. ab*bb+:** Chuỗi này không thể sinh ra từ G vì có hai toán hạng b liên tiếp sau toán tử *. Tương tự như trên, phải có biểu thức E ở giữa. Vậy, đáp án đúng là B. aab++a.

Câu hỏi liên quan