ll(1)文法判斷
題型:1.判斷該文法是否是ll(1)文法?
2.若是,給出它的ll(1)分析表,否則說明理由。
概念:對於產生式 a -> α | β
1.如果α、β均不能推導出ε(空語句),則 first(α) ∩ first(β) = ∅;
2.α 和 β 至多有乙個能推導出 ε;
3. 如果 β經過0步或多步可以推導出 ε,則 first(α) ∩ follow(a) = ∅。
關鍵:求出各個候選式的first集,以及各個語法變數的follow集
例子:文法:
e -> te'
e' -> +te' | ε
t -> ft'
t' -> *ft' | ε
f -> (e) | id
解析:1.根據定義3,只需考慮多於乙個候選式的語法變數
follow(e') = follow(e) =
follow(t') = follow(t) = first(e') ∪follow(e) ∪ follow(e') =
first(+te') =
first(*ft') =
按照定義3:分析:
first(+te') ∩ follow(e') = ∅ 成立
first(*ft') ∩ follow(t') = ∅ 成立
2.根據定義1,f-> (e) | id
first((e)) =
first(id) =
first((e)) ∩ first(id) = ∅ 成立
3.根據定義2,全部滿足
因此,該文法是 ll(1)文法
LL(1)文法解析
一 問題描述 給定上下文無關文法,對其進行解析,得出first集和follow集。在有能力的情況下,可以求出ll 1 分析表。二 演算法設計 本程式主要分成三塊內容,第一是文法的讀入解析,第二是first集的求解,第三為follow集的求解。文法的解析需要根據整行讀入的文法,生成rulelist 表...
如何判斷文法是否是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 文法,說明理由 s abc a a b b first集合求法就是 能由非終結符號推出的所有的開頭符號或可能的 但要求這個開頭符號是終結符號。如此題a可以推導出a和 所以first a a,同理first b s可以推導出abc,還可以推導出bc,還可以推導出c,所以fir...