FIRST 集合
1.(終結符規則)終結符的FIRST集合是它本身。
2.(空規則)如果X→ε是一個產生式,就把ε加入X中。
3.(空傳播規則)對於一個產生式
X -> Y1 Y2 ... Yi ... Yk
遍歷右部,將FIRST(Y1)中ε除外的元素加入FIRST(X),然后看Y1能不能推出空,如果能,就將FIRST(Y2)中ε除外的元素加入FIRST(X)(),然后看Y3能不能推出空。。。直到Yi不能推出空。將FRIST(Yi)中ε除外的元素加入FIRST(X)后,便結束。
如果所有的Y都可以推出空,就將ε加入FIRST(X)。
A能推出空 <=> ε∈FIRST(A)
求出FIRST集合后可按此規則檢查。
一個序列的FIRST集合
同求FIRST集合的第2步
FOLLOW集合
FOLLOW集合不能包含ε!
1.(EOF規則)$在FOLLOW(S)中。
2.(取FIRST規則)如果存在一個產生式A→αBβ,則將FIRST(β)的非空元素加入FOLLOW(B)中。
3.(取FOLLOW規則)如果存在一個產生式A→αB,或者存在產生式A→αBβ且FIRST(β)包含ε,那么FOLLOW(A)中的所有符號都在FOLLOW(B)中。
預測分析表
對於每條產生式A→α:
1.(FIRST規則) 對FIRST(α)中的所有終結符a,M[A,a]=A→α。
2.(FOLLOW規則)如果空屬於FIRST(α),則對FOLLOW(A)中的所有終結符a,M[A,a]=A→α。