Trả lời:
Đáp án đúng: D
Để tìm FOLLOW(S), ta thực hiện theo các bước sau:
\r\n- \r\n
- \r\n
Bước 1: Đặt $ vào FOLLOW(S), trong đó S là ký hiệu bắt đầu.
\r\n \r\n - \r\n
Bước 2: Nếu có luật sinh A -> αBβ, thì mọi phần tử của FIRST(β) (ngoại trừ ε) được thêm vào FOLLOW(B).
\r\n \r\n - \r\n
Bước 3: Nếu có luật sinh A -> αB, hoặc A -> αBβ, trong đó FIRST(β) chứa ε, thì mọi phần tử của FOLLOW(A) được thêm vào FOLLOW(B).
\r\n \r\n
Áp dụng vào văn phạm đã cho:
\r\n- \r\n
- \r\n
S là ký hiệu bắt đầu, nên $ ∈ FOLLOW(S)
\r\n \r\n - \r\n
Xét luật sinh S -> aAb. Ta thấy b theo sau A, nên FIRST(b) = {b} sẽ được thêm vào FOLLOW(A).
\r\n \r\n - \r\n
Xét luật sinh A -> mSn. Ta thấy n theo sau S, nên FIRST(n) = {n} sẽ được thêm vào FOLLOW(S).
\r\n \r\n - \r\n
Vậy FOLLOW(S) = {$, n}. Vì không có đáp án nào trùng khớp, nên câu hỏi không có đáp án đúng.
\r\n \r\n





