乔姆斯基范式转换算法

时间:2016-05-31 22:57:20

标签: complexity-theory context-free-grammar computation-theory context-free-language chomsky-normal-form

为什么我们添加新的开始状态S0 - >当我们想将语法转换为乔姆斯基普通形式时?如果我们不这样做会出现什么问题?

起初我认为这是因为epsilon规则。但是我们不会从start变量中删除epsilon规则。那么,添加S0的好处是什么? S'

由于

2 个答案:

答案 0 :(得分:1)

根据空字符串是否使用该语言,您可能会使用规则$ S - > \ epsilon $(或$ S_0 - > \ epsilon $)。如果这些符号出现在规则的右侧,则可以删除任意数量的符号$ S $。因为我们不希望再次出现开始符号,所以我们引入一个新符号。

通过这种方式,我们在每个应用规则A - >>时得到一个符号。公元前。

答案 1 :(得分:0)

我想我有一些解释。如果语法是这样的:

MyBuilderExt::func(builder)

然后,在删除"单位规则"由于我们不考虑任何特定订单,我们可能会删除S - >首先是S1,我们将:

S --> S1
S1 --> S
S1 --> a

并完全删除了起始变量。