JavaScript is required

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?

A.

- (id + id)

B.

+id+id+

C.

id*id- (id + id)

D.

+(id + id)

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

Câu hỏi liên quan