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)=?
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}.