若文法中含有形如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->ε