JavaScript is required

Cho văn phạm với các luật sinh sau: E->TE; E’->+TE’; E’->epsilon; T- >FT'; T'->*FT’; T’->epsilon; F->(E); F->id; FOLLOW (T’)=?

A.

A. { ),dollar }

B.

B. {*, +, )}

C.

C. {+,),dollar}

D.

D. { id,dollar}

Trả lời:

Đáp án đúng: C


Để tìm FOLLOW(T'), ta thực hiện theo các bước sau:

  1. Vì T' xuất hiện ở vế phải của luật T -> FT', nên ta xét FIRST(phần còn lại của luật sau T'). Ở đây, phần còn lại là rỗng (epsilon), do đó ta xét FOLLOW(T).

  2. T xuất hiện ở vế phải của luật E -> TE', nên ta xét FIRST(E'). FIRST(E') = { + , epsilon}. Do đó, + thuộc FOLLOW(T).

  3. Vì E' -> epsilon, nên FOLLOW(E) thuộc FOLLOW(T). Để tìm FOLLOW(E), ta thấy E xuất hiện trong luật F -> (E), do đó ')' thuộc FOLLOW(E). Vì vậy, ')' thuộc FOLLOW(T).

  4. Do T -> FT', suy ra FOLLOW(T) chứa FOLLOW(T').

  5. Xét luật E' -> +TE'. Khi đó FOLLOW(E') thuộc FOLLOW(T').

  6. Vì E là ký hiệu bắt đầu, nên $ thuộc FOLLOW(E). Do đó $ thuộc FOLLOW(T) và FOLLOW(T').

  7. Vậy, FOLLOW(T') = { +, ), $ }.

Câu hỏi liên quan