判斷該文法是不是ll(1)文法,說明理由 s→abc a→a|ε b→b|ε?
first集合求法就是:能由非終結符號推出的所有的開頭符號或可能的ε,但要求這個開頭符號是終結符號。如此題a可以推導出a和ε,所以first(a)={a,ε};同理first(b)=;s可以推導出abc,還可以推導出bc,還可以推導出c,所以first(s)={a,b,c}。
follow集合的求法是:緊跟隨其後面的終結符號或#。但文法的識別符號包含#,在求的時候還要考慮到ε。具體做法是把所有包含你要求的符號的產生式都找出來,再看哪個有用。 follow(s)={#} 如求a的,產生式:s→abc a→a|ε ,但只有s→abc 有用。跟隨在a後年的終結符號是first(b)={b,ε},當first(b)的元素為ε時,跟隨在a後的符號就是c,所以 follow(a)={b,c} 同理follow(b)={c}。
因為first集中含有
ε的非終結符的follow集與其first集交集為空:
first(a)= follow(a)= first(b)= follow(b)=
故不存在二義性,文法是ll(1)文法。
例子不錯,考試之前看的,攢人品~~
老師真給力,複習重點完全沒考到,gg思密達
怎樣求FIRST集與FOLLOW集
文法 s abc a a b b first集合求法 能 由非終結符號推出的所有的開頭符號或可能的 但要求這個開頭符號是終結符號。如此題a可以推導出a和 所以first a a,同理 first b s可以推導出abc,還可以推導出bc,還可以推導出c,所以first s a,b,c follow集...
關於求FIRST集和FOLLOW集
這幾天上課沒怎麼聽進去,導致對求first集和follow集有點模模糊糊的,於是在網上找到乙個部落格,看完就理解了,就轉過來了。來自 對於終結符和非終結符的理解 終結符 通俗的說就是不能單獨出現在推導式左邊的符號,也就是說終結符不能再進行推導。非終結符 不是終結符的都是非終結符。如 a b,則a是非...
怎樣求FIRST集 FOLLOW集和SELECT集
終結符 通俗的說就是不能單獨出現在推導式左邊的符號,也就是說終結符不能再進行推導。非終結符 不是終結符的都是非終結符。非男即女,呵呵 如 a b,則a是非終結符。一般書上終結符用小寫,非終結符用大寫。從識別符號 開始符 開始,把當前產生的符號串中的非終結符替換為相應規則右部的符號串,直到全部由終結符...