SELECT(S→AB)=FIRST(AB)∪ FOLLOW(S)={b,a,#} SELECT(S→bC)=FIRST(bC)={b} SELECT(A→ε)=FIRST(ε)∪FOLLOW(A)={a,c,#} SELECT(A→b)=FIRST(b)={b} SELECT(B→ε)=FIRST(ε)∪FOLLOW(B)={#} SELECT(B→aD)=FIRST(aD)={a} SELECT(C→AD)=FIRST(AD)={a,b,c} SELECT(C→b)=FIRST(b)={b} SELECT(D→aS)=FIRST(aS)={a} SELECT(D→c)=FIRST(c)={c} 由以上计算结果可得相同左部产生式的SELECT交集为: SELECT(S→AB)∩SELECT(S→bC)={b,a,#}∩{b}={b}≠ ![]() ![]() SELECT(A→ε)∩SELECT(A→b)={a,c,#}∩{b}= ![]() ![]() SELECT(B→ε)∩SELECT(B→aD)={#}∩{a}= ![]() ![]() SELECT(C→AD)∩SELECT(C→b)={b,a,c}∩{b}={b}≠ ![]() ![]() SELECT(D→aS)∩SELECT(D→c)={a}∩{c}= ![]() ![]() 由LL(1)文法定义知该文法不是LL(1)文法,因为关于S和C的相同左部其产生式的SELECT集的交集不为空。 |