若文法中含有形如A->αβ|αγ的产生式,就会使FIRST集相交,就满足不了LL(1)文法的充分必要条件。
可以做下面的等价变换:
A->αβ|αγ
A->α(β|γ)
A->αA' 引入新的终结符A'
A'->β|γ
一般形式:
A->αβ1|αβ2|...|αβn
A->α(β1|β2|...|βn)
A->A'
A'->β1|β2|...|βn
例子:
文法的产生式为:
S->aSb
S->aS
S->ε
对产生式提取左公共因子:
S->aS(b|ε)
S->ε
引入终结符A
S->aSA
A->b
A->ε
S->ε