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; FIRST(T’) =?

A.

{ epsilon, id }

B.

{ (, id }

C.

{ *,id }

D.

{*, epsilon }

Trả lời:

Đáp án đúng: D


Để tìm FIRST(T'), ta xét các luật sinh của T':

  • T' -> *FT'
  • T' -> epsilon

Theo định nghĩa, FIRST(T') là tập hợp các terminal có thể xuất hiện đầu tiên trong chuỗi dẫn xuất từ T'. Vì T' có thể sinh ra *FT', nên '*' thuộc FIRST(T'). Vì T' có thể sinh ra epsilon (ε), nên epsilon cũng thuộc FIRST(T').

Vậy, FIRST(T') = {*, epsilon}.

Câu hỏi liên quan