LL 1 文法判斷

2021-06-27 09:04:28 字數 824 閱讀 4025

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...