Văn phạm với các luật sinh: E → EAE; E-> (E); E-> - E; E-> id; A→+ Có thể sinh ra chuỗi nhập nào?
Trả lời:
Đáp án đúng: D
Phân tích văn phạm:
- E → EAE: Biểu thức E có thể được tạo thành từ E A E, tức là hai biểu thức E nối với nhau bởi một toán tử A.
- E → (E): Biểu thức E có thể là một biểu thức E khác nằm trong cặp ngoặc đơn.
- E → -E: Biểu thức E có thể là một biểu thức E khác có dấu trừ phía trước.
- E → id: Biểu thức E có thể là một định danh (id).
- A → +: Toán tử A có thể là dấu cộng (+).
Xét các phương án:
A. - (id + id): Chuỗi này có thể được sinh ra từ văn phạm trên. E → -E → -(E) → -(EAE) → -(idAid) → -(id+id).
B. +id+id+: Chuỗi này không thể được sinh ra vì luật sinh không cho phép dấu + ở đầu hoặc cuối biểu thức một cách độc lập.
C. id*id- (id + id): Chuỗi này không thể được sinh ra vì văn phạm không có toán tử nhân (*).
D. +(id + id): Chuỗi này không thể được sinh ra vì luật sinh không cho phép dấu + ở đầu biểu thức.
Vậy, đáp án đúng là A. - (id + id).





