判斷該文法是不是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)文法。
例子不錯,剛好複習了first集和follow集的求法,考試之前看的,攢人品~~
如何判斷文法是否為LL 1 文法
判斷該文法是不是ll 1 文法,說明理由 s abc a a b b first集合求法就是 能由非終結符號推出的所有的開頭符號或可能的 但要求這個開頭符號是終結符號。如此題a可以推導出a和 所以first a a,同理first b s可以推導出abc,還可以推導出bc,還可以推導出c,所以fir...
LL 1 文法判斷
ll 1 文法判斷 題型 1.判斷該文法是否是ll 1 文法?2.若是,給出它的ll 1 分析表,否則說明理由。概念 對於產生式 a 1.如果 均不能推導出 空語句 則 first first 2.和 至多有乙個能推導出 3.如果 經過0步或多步可以推導出 則 first follow a 關鍵 求...
LL(1)文法解析
一 問題描述 給定上下文無關文法,對其進行解析,得出first集和follow集。在有能力的情況下,可以求出ll 1 分析表。二 演算法設計 本程式主要分成三塊內容,第一是文法的讀入解析,第二是first集的求解,第三為follow集的求解。文法的解析需要根據整行讀入的文法,生成rulelist 表...