📅  最后修改于: 2020-11-26 10:19:09             🧑  作者: Mango
如果制作采用以下格式,则CFG格式为Greibach正常格式-
A→b
A→bD 1 …D n
S→ε
其中A,D 1 ,…,D n为非末端,b为末端。
步骤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