笔记:LL1分析
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→α。