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





