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(B)=?

A.

{0}

B.

{1}

C.

{0,1}

D.

{0,1,epsilon}

Trả lời:

Đáp án đúng: C


Để tìm FIRST(B), ta xem xét các luật sinh có B ở vế trái:

  • (5) B -> A1
  • (6) B -> 0

Từ luật (6), ta thấy ngay 0 thuộc FIRST(B). Từ luật (5), ta cần tìm FIRST(A).

Các luật sinh có A ở vế trái là:

  • (2) A -> A0
  • (3) A -> B0
  • (4) A -> 1

Từ luật (4), ta có 1 thuộc FIRST(A). Từ luật (3), ta cần tìm FIRST(B). Vì B -> 0, nên 0 thuộc FIRST(B), do đó 0 thuộc FIRST(A). Vì A -> 1, nên 1 thuộc FIRST(A).

Vậy FIRST(A) = {0, 1}.

Do B -> A1 và FIRST(A) = {0, 1}, nên B có thể bắt đầu bằng 0 hoặc 1, sau đó là 1.

Ngoài ra, B -> 0, nên 0 thuộc FIRST(B).

Vậy FIRST(B) = {0, 1}.

Câu hỏi liên quan