JavaScript is required

Cho văn phạm gồm 6 luật sinh: (1) S->AB; (2) A->A0; (3) A->B0; (4) A->1; (5) B- >A1; (6) B->0. FIRST(S)=?

A.

{0}

B.

{1}

C.

{0,1}

D.

{0,1,epsilon}

Trả lời:

Đáp án đúng: C


Để tìm FIRST(S), ta cần tìm tất cả các terminal có thể xuất hiện đầu tiên trong các chuỗi dẫn xuất từ S. 1. S -> AB. Vì vậy, FIRST(S) sẽ chứa FIRST(A). 2. A -> A0, A -> B0, A -> 1. Vậy FIRST(A) sẽ chứa FIRST(B), 0, và 1. 3. B -> A1, B -> 0. Vậy FIRST(B) sẽ chứa FIRST(A) và 0. Kết hợp lại, FIRST(A) chứa 0 và 1. Do đó FIRST(B) chứa 0 và 1. Vì FIRST(S) chứa FIRST(A), nên FIRST(S) = {0, 1}. Vậy đáp án đúng là C. {0,1}

Câu hỏi liên quan