2014-02-08 14 views
0

語法:給定語法中的跟隨(D)是什麼?

E -> T D 
D -> + T D | EPSILON 
T -> F M 
M -> * F M | EPSILON 
F -> (E) | id 

後續的(d)在書中給出= {+,$)}

怎樣的+是d的追隨者?

如果它是正確的,那麼*也應該是M的跟隨者,這在MOLLOW(M)= {+,$,)中是不明顯的}。

回答

0

始終遵循的規則:在FOLLOW(S),其中S是在輸入正確的結束標記開始符號和$

  1. 廣場$。
  2. 如果有生產A→aBs,其中FIR除了e被放置在FOLLOW(B)中。
  3. 如果存在生產A→aB或生產A-> aBs,其中FIRST包含e,那麼FOLLOW(A)中的所有內容都在FOLLOW(B)中。

的一個重要的一點在上述規則需要注意的是:

點3:A - > AB:按照(A)是在FOLLOW(B)是適用於非EVERY在RHS的終端。將此視爲規則3.a.

現在,

FOLLOW(E) = {), $ }     // by rule 2 
FOLLOW(D) = {), $ }     // by rule 3 
FOLLOW(T) = FIRST(D) = { +, $,) }  // by rule 3 and 3.a 
FOLLOW(M) = { +, $,) }     // by rule 3 and 3.a 
FOLLOW(F) = FIRST(M) = {*, $, +,) } // by rule 3 and 3.a