0
E -> T D
D -> + T D | EPSILON
T -> F M
M -> * F M | EPSILON
F -> (E) | id
後續的(d)在書中給出= {+,$)}
怎樣的+是d的追隨者?
如果它是正確的,那麼*也應該是M的跟隨者,這在MOLLOW(M)= {+,$,)中是不明顯的}。
E -> T D
D -> + T D | EPSILON
T -> F M
M -> * F M | EPSILON
F -> (E) | id
後續的(d)在書中給出= {+,$)}
怎樣的+是d的追隨者?
如果它是正確的,那麼*也應該是M的跟隨者,這在MOLLOW(M)= {+,$,)中是不明顯的}。
始終遵循的規則:在FOLLOW(S),其中S是在輸入正確的結束標記開始符號和$
- 廣場$。
- 如果有生產A→aBs,其中FIR除了e被放置在FOLLOW(B)中。
- 如果存在生產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