LL 1 文法的判斷,遞迴下降分析程式

2022-09-17 03:18:09 字數 1184 閱讀 3126

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 關鍵 求...