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 ->da)=first(da)=
select(a ->ε)=first(ε)- u follow(a)=
select(a ->da) ∩ select(a ->ε)=≠∅
g(s)不是 ll(1)文法
2.(上次作業)消除左遞迴之後的表示式文法是否是ll(1)文法?
first(te』)=first(t)=
first(t』)=
first(e』)=
first(+te』)=
first(ε)=
first(ft』)=first(f)=
first(*ft』)=
first((e))=
first(i)=
follow(e)=
follow(e』)=follow(e)=
follow(t)=(first(e』)-) u follow(e』)=
follow(t』)=follow(t)=
follow(f)=(first(t』)-) u follow(t』)=
select(e->te') =first(te』)=first(t)=
select(e'->+te') =first(+te』)=
select(e'->ε) = (first(ε) -) u follow(e') =
select(t->ft') = first(ft』)=first(f)=
select(t'->*ft') = first(*ft')=
select(t'->ε) = first(ε) - u 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 ) = ø
是ll(1)文法
3.接2,如果是ll(1)文法,寫出它的遞迴下降語法分析程式**。
e(){t();
e'();
e'()
t()t'()
f()void parsee(){
switch(lookahead){
case '(','i':
parset();
parsee'();
break;
default:
print("syntax error \n");
exit(0);
void parsee'(){
switch(lookahead){
case '+':
matchtoken('+');
parset();
parsee'();
break;
case ')','#':
break;
default:
print("syntax error \n");
exit(0);
void parset(){
switch(lookahead){
case '(','i':
parsef();
parset'();
break;
default:
print("syntax error \n");
exit(0);
void parset'(){
switch(lookahead){
case '*':
matchtoken('*');
parsef();
parset'();
break;
case '+',')','#':
break;
default:
print("syntax error \n");
exit(0);
void parsef(){
switch(lookahead){
case '(':
matchtoken('(');
parsee();
matchtoken(')');
break;
case 'i':
matchtoken('i');
break;
default:
print("syntax error \n");
exit(0);
4.加上實驗一的詞法分析程式,形成可執行的語法分析程式,分析任意輸入的符號串是不是合法的表示式。
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 follow a select a da first follow c select a first aadc follow d select c a...
編譯原理之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 關鍵 求...