JavaScript is required

Cho văn phạm S → A hoặc S-> BCD; A → BBA hoặc A->EB; B → bEc hoặc B->BC hoặc B->BDc ; C → c ; D → a hoặc D-> BDb; E → a hoặc E->bE , First(B)=?

A.

{ a,b,c }

B.

{ b,c }

C.

{ a,c}

D.

{ a}

Trả lời:

Đáp án đúng: A


Để tìm First(B), ta cần xem xét tất cả các luật sinh có B ở vế trái và tìm các terminal (hoặc có thể dẫn đến terminal) đầu tiên mà B có thể sinh ra.

  • B → bEc: B có thể sinh ra b (terminal)
  • B → BC: B có thể sinh ra B, sau đó là C. Vì C → c, nên B có thể sinh ra c
  • B → BDc: B có thể sinh ra B, sau đó là D và c. Vì D → a hoặc D → BDb, nên D có thể sinh ra a. Vậy B có thể sinh ra a thông qua D, cụ thể là B -> BDc -> Ba...c.

Vậy First(B) = {b, c, a}.

Câu hỏi liên quan