扩展CFG,是什么呢?(Extension to CFG, what is it?)

2019-06-27 06:08发布

考虑下面的扩展上下文无关文法,它允许规则有在左手侧,一个(或多个)上的非末端的右侧端。 也就是说,形式的规则:

A b -> ...

右手边可以是任何东西,像在上下文无关文法。 特别是,它不是必需的,该右手侧将具有恰好在端部的终端相同的符号。 在这种情况下,这种扩展是上下文敏感的。 但终端不只是一个背景。 有时,这种终端被称为“推回”。

显然,这是不再CFG(类型2)。 它包括1类。 但究竟是什么? 真正0型了吗?

这个特殊的扩展允许在定条款文法DCG的序言。 (为了避免误解,我不认为这里的Prolog的全面扩展。即我认为终端来自有限字母表而不是任意的条件,我也并不认为序言的被允许在DCG中额外的参数,它也进入类型 - 0了。)


编辑:这是一个简单的描述扩展方式:添加到窗体的CFG规则

A b -> <epsilon>

Answer 1:

这里的一个局部的答案:

语法是类型0 A内上下文有关文法 (类型1)具有如下形式的规则wAx -> wBx其中w和x终端和非终端的字符串,和B不为空。 需要注意的是由于B不为空, |wAx| <= |wBx| |wAx| <= |wBx| 。 你的语法的格式的规则Ax -> z其中z是终端和非终端的字符串,并且可以是空的,且x可以被移除。 这违反CSG的两个原则。

Unsatisfyingly,我没有回答两件事情:

  • 由你的语法类型-1产生的语言 ? 语法是0型,但是,这并不意味着该语言的类型不能为-1。 例如,正则语言(类型3)可通过CFGS(类型2)进行说明。
  • 是语言递归 ? 因为,如果是这样,语言是可判定的(不从停机问题遭受)这是很重要的。

    我目前正在尝试对第二点的证据,但它可能是超出了我的能力。



Answer 2:

是啊是0型,我认为。 原则第一3种类型(3,2和1)是那些不能进行还原。 这些都是生成唯一的类型。

在这里,你可以将一个终端到小量所以它的类型0。



Answer 3:

要回答我关于序言的DCG形式主义问题,这个扩展现在被称为一个semicontext。 见N253 DIN草案DCG中2014年4月8日- ISO / IEC 13211-3 WDTR:2014年4月8日

特定

a1, [b] --> ... .

a2, [b,b] --> ... .

终端序列[b]现在是一个semicontext,以及终端序列[b,b]

将相同的末端序列,现在出现在统治的结束,我们将有一个背景:

a3, [b,b] --> ..., [b,b].

因此,“半”是指这里的“半壁江山” - 类似于半群,其中一个群保持的代数性质的一半。



文章来源: Extension to CFG, what is it?