等效的CFG(无上下文语法),不产生空值

时间:2019-05-13 07:49:59

标签: automata

对于下面给出的语法,没有空乘的等效CFG是什么?

S->ASB/epsilon
A->Aa/epsilon
B->bB/epsilon.

1 个答案:

答案 0 :(得分:0)

规则是,如果X:= epsilon,我们可以将任何产量Y:= rXs更改为Y:= rXs |。 rs并消除乘积X:= epsilon。让我们看看您的情况如何。首先,我们可以S。

S -> ASB | epsilon … becomes … S -> ASB | AB
A -> Aa | epsilon
B -> bB | epsilon

现在我们做答:

S -> ASB | AB … becomes … S -> ASB | SB | AB | B
A -> Aa | epsilon … becomes … A -> Aa | a
B -> bB | epsilon

现在我们做B:

S -> ASB | SB | AB | B … becomes … S -> ASB | AS | SB | AB | A | B | epsilon
A -> Aa | a
B -> bB | b

我们无法摆脱S-> epsilon,因为空字符串是由输入语法生成的。