LL(1)文法 終結首符集 FIRST(α) FOLLOW(A) 預測分析表
阿新 • • 發佈:2018-12-29
1、LL(1)文法的目的是為了:(1)、消除左遞迴 (2)、消除回溯、提左公因子
一個文法G是LL(1)文法的條件:
(1)不含左遞迴
(2)文法中每個非終結符的各個候選式的FIRST集都不相交
eg: A -> α1 | α2 | ......| αn (α表示候選式,候選字串)
則 FIRST(αi)∩ FIRST(αj)= ∅ (i ≠ j)
(3)文法中每個非終結符A,如果有 FIRST( A ) 包含 ε ,則
FIRST(A)∩ FOLLOW(A)= ∅
2、終結首符集 FIRST(α)
參考書上定義,自己的理解:就是α所代表字串中的第一個字元
方法:
根據每個產生式的候選式,一 一找其第一個終結符即第一個字元
3、FOLLOW(A)
參考書上定義,自己的理解:就是非終結符A後面對應字串的第一個字元
方法:
(1) 文法開始符號S,置#(終結符號)於FOLLOW(S)中
(2) 若候選式中A後面有字串α,則將FIRST(α)置於FOLLOW(A)
(3) 若候選式中A後面為 ε (空)或者沒有,則將 --> 左邊的非終結符的FOLLOW集放到A的FOLLOW集中
4、預測分析表
對照實際分析表理解
第一列為文法中所有的非終結符
第一行為文法中所有的終結符
對照候選式,若候選式α的 FIRST(α)含有對應終結符,則再對應格子寫上該候選式
若候選式為ε (空),則將對應非終結符A即 --> 左邊 的FOLLOW(A)裡的非終結符對應格子寫上候選式
具體參照書上