JavaScript is required

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

A.

{ ),dollar }

B.

{*, +, ), dollar }.

C.

{ *,+,id, ) }

D.

{ id, dollar }

Trả lời:

Đáp án đúng: A


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

  1. Vì E' xuất hiện ở vế phải của luật sinh E -> TE', nên FOLLOW(E') chứa tất cả các phần tử của FOLLOW(E).

  2. Để tìm FOLLOW(E), ta xem E xuất hiện ở vế phải của luật sinh nào. Trong trường hợp này, E xuất hiện trong luật sinh F -> (E). Do đó, FOLLOW(E) chứa ")".

  3. Vì E là ký hiệu bắt đầu (start symbol), FOLLOW(E) chứa "$" (ký hiệu kết thúc chuỗi).

  4. Vậy FOLLOW(E) = {")", "$"}. Do đó, FOLLOW(E') cũng chứa {")", "$"}.

  5. Vì E' -> epsilon (E' có thể dẫn đến chuỗi rỗng), nên FOLLOW(E') chứa tất cả các phần tử của FOLLOW(E), tức là {")", "$"}.

Vậy FOLLOW(E') = {")", "$"}.

Câu hỏi liên quan