筆記: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→α。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM