📜  格赖巴赫范式

📅  最后修改于: 2020-11-26 10:19:09             🧑  作者: Mango


如果制作采用以下格式,则CFG格式为Greibach正常格式-

A→b

A→bD 1 …D n

S→ε

其中A,D 1 ,…,D n为非末端,b为末端。

将CFG转换为Greibach范式的算法

步骤1-如果起始符号S出现在右侧,则创建一个新的起始符号S’和一个新的生产S’→S

步骤2-删除空产品。 (使用前面讨论的Null生产移除算法)

步骤3-删除单位生产。 (使用前面讨论的单位生产移除算法)

步骤4-删除所有直接和间接的左递归。

步骤5-对产品进行适当的替换,以将其转换为GNF的适当形式。

问题

将以下CFG转换为CNF

S→XY | Xn | p

X→mX |米

Y→Xn | Ø

在此, S不会出现在任何产品的右侧,并且生产规则集中没有单位或空产品。因此,我们可以跳过步骤1到步骤3。

第4步

现在更换后

X在S→XY | Xo | p

mX |米

我们获得

S→mXY | mY | mXo |莫| p。

并在更换后

X在Y→X n | Ø

与右侧

X→mX |米

我们获得

Y→mXn | mn | o。

将两个新的产品O→o和P→p添加到产品集,然后我们进入最终的GNF,如下所示:

S→mXY | mY | mXC | mC | p

X→mX |米

Y→mXD | mD | Ø

从→

P→p