在语法中查找FIRST集

时间:2013-12-05 07:36:08

标签: parsing compiler-construction context-free-grammar ll

今天我正在阅读如何找到First和Follow of a grammar。我看到了这个语法:

  

S→ACB | CbB |的Ba

     

A→da | BC

     

B→g | ε

     

C→h | ε

声称是

  

FIRST(S)= FIRST(ABC)U FIRST(CbB)U FIRST(Ba)

     

= {d,g,h,ε} U {h,b} U {g,a}

     

= {d,g,h,ε,b,a}

我不明白a和b在这个集合中是怎样的。谁能解释一下呢?

1 个答案:

答案 0 :(得分:2)

请注意,B和C都可以为空(它们可以产生ε)。这意味着从生产

  

S→CbB

我们得到b∈FIRST(S),因为如果我们使用生产C→ε,我们可以得到以b开头的生产。

同样,请注意

  

S→Ba

是一个生产,所以我们得到一个∈FIRST(S),因为我们可以使用生产B→ε在一个可从S派生的字符串的前面得到a。

希望这有帮助!