1. 文法 g(s):
(1)s -> ab
(2)a ->da|ε
(3)b -> cc
(4)c -> aadc |ε
(5)d -> b|ε
驗證文法 g(s)是不是 ll(1)文法?
first(da)= follow(a)= select(a->da)=
first(ε)= follow(c)= select(a->ε)=
first(aadc)= follow(d)= select(c->aadc)=
first(b)= select(c->ε)=
select(d->b)=
select(d->c)=
因為:select(a->da)∩select(a->ε)!=空
select(c->aadc)∩select(c->ε)=空
select(d->b)∩select(d->ε)=空
所以g(s)不是ll(1)文法。
2.法消除左遞迴之後的表示式文法是否是ll(1)文法?
select(e' -> +te') = first(+te') =
select(e' -> ε) = (first(ε)-)∪follow(e') =
select(t' -> *ft') = first(*ft') =
select(t' -> ε) = (first(ε)-)∪follow(t') =
select(f -> (e)) = first((e)) =
select(f -> i ) = first(i) =
因為:select(e' -> +te') ∩ select(e' -> ε) = ∅
select(t' -> *ft') ∩ select(t' -> ε) = ∅ select(f -> (e)) ∩ select(f -> i ) = ∅
所以:文法g『(s)是ll(1)文法。
3.接2,如果是ll(1)文法,寫出它的遞迴下降語法分析程式**。
e(){t();
e'();
e'()
t()t'()
f()
LL 1 文法的判斷,遞迴下降分析程式
1.文法 g s 1 s ab 2 a da 3 b cc 4 c aadc 5 d b 驗證文法 g s 是不是 ll 1 文法?first a first b first c first d first follow a follow b follow c follow d select a d...
編譯原理之LL 1 文法的判斷,遞迴下降分析程式
1.文法g s 1 s ab 2 a da 3 b cc 4 c aadc 5 d b 驗證文法g s 是不是ll 1 文法?解 因為 first da first first aadc first b follow a first b first d first c follow c follow...
LL 1 文法判斷
ll 1 文法判斷 題型 1.判斷該文法是否是ll 1 文法?2.若是,給出它的ll 1 分析表,否則說明理由。概念 對於產生式 a 1.如果 均不能推導出 空語句 則 first first 2.和 至多有乙個能推導出 3.如果 經過0步或多步可以推導出 則 first follow a 關鍵 求...