考虑下面的扩展上下文无关文法,它允许规则有在左手侧,一个(或多个)上的非末端的右侧端。 也就是说,形式的规则:
A b -> ...
右手边可以是任何东西,像在上下文无关文法。 特别是,它不是必需的,该右手侧将具有恰好在端部的终端相同的符号。 在这种情况下,这种扩展是上下文敏感的。 但终端不只是一个背景。 有时,这种终端被称为“推回”。
显然,这是不再CFG(类型2)。 它包括1类。 但究竟是什么? 真正0型了吗?
这个特殊的扩展允许在定条款文法DCG的序言。 (为了避免误解,我不认为这里的Prolog的全面扩展。即我认为终端来自有限字母表而不是任意的条件,我也并不认为序言的被允许在DCG中额外的参数,它也进入类型 - 0了。)
编辑:这是一个简单的描述扩展方式:添加到窗体的CFG规则
A b -> <epsilon>
这里的一个局部的答案:
语法是类型0 A内上下文有关文法 (类型1)具有如下形式的规则wAx -> wBx
其中w和x终端和非终端的字符串,和B不为空。 需要注意的是由于B不为空, |wAx| <= |wBx|
|wAx| <= |wBx|
。 你的语法的格式的规则Ax -> z
其中z是终端和非终端的字符串,并且可以是空的,且x可以被移除。 这违反CSG的两个原则。
Unsatisfyingly,我没有回答两件事情:
是啊是0型,我认为。 原则第一3种类型(3,2和1)是那些不能进行还原。 这些都是生成唯一的类型。
在这里,你可以将一个终端到小量所以它的类型0。
要回答我关于序言的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].
因此,“半”是指这里的“半壁江山” - 类似于半群,其中一个群保持的代数性质的一半。