首先是蒋宗礼老师的教材上LL(1)文法没有的知识点的补充:
(1)S文法:产生式无左递归,无回溯,要求较高
①文法中每一个产生式的右部均以终结符开始(一定不会出现左递归)
②具有相同左部的产生式右部首符互不相同(一定不会出现回溯现象)
(2)Q文法:允许在S文法中出现空产生式
LL(1)文法:具有相同左部的产生式的可选集必须是互不相交的。
求非终结符的follow集时只需关注产生式右部出现的该非终结符即可
对于产生式A-α的可选集的求法:
1.若α≠ε且α不可空
select(A-α) = first(α)
2.若α不等于ε但又可空
select(A-α) = first(α)∪follow(A)
3.若α=ε
select(A-α) = follow(A)
例:1.S->AB 6.B->aD
2.S->bC 7.C->AD
3.A->ε 8.C->b
4.A->b 9.D->aS
5.B->ε