上下文有关文法

上下文有关文法(CSG,英语:context-sensitive grammar)是一种形式文法,其中任何产生式规则的左手端和右手端都可以被终结符和非终结符构成的上下文所围绕。上下文有关文法比上下文无关文法更一般性,但仍足够有秩序得可以被线性有界自动机所解析。

上下文有关文法的概念是诺姆·乔姆斯基在1950年代介入的,被作为描述自然语言的语法的一种方式,在自然语言中一个单词是否可以出现在特定位置上,要依赖于上下文。可以被上下文有关文法描述的形式语言叫做上下文有关语言。

形式定义

形式文法 G = (N, Σ, PS) 是上下文有关的,如果在 P 中所有的规则都有如下形式

αAβ → αγβ

这里的 A ∈ N(就是 A 是单一非终结符),α,β ∈ (N U Σ)*(就是 α 和 β 是非终结符和终结符的字符串)而 γ ∈ (N U Σ)+(就是 γ 是非终结符和终结符的非空字符串)。

上下文有关文法的某些定义只要求,对于任何形如 u → v 的产生式规则,u 的长度应当小于或等于 v 的长度。这个看起来要弱些的要求,被断定为在实际上等价于上面的定义。[1]

此外,还允许如下形式的规则

S → ε

这里的 ε 表示空串,而 S 不出现在任何规则的右手端。增加空串允许声明:上下文有关语言是上下文无关语言的真超集,而不是作出弱一些的声明:没有 →ε产生式的所有上下文无关文法也是上下文有关文法。

上下文有关这个名称来源自 α 和 β 形成了 A 的上下文并且决定 A 是否可以被 γ 所替代。这不同于上下文无关文法,它不考虑非终结符的上下文。

如果把向语言增加空串的可能性增加到由不收缩文法所识别的那些字符串(永不包括空串的)中,则在这两种定义下的语言是相同的。

计算的性质和使用

特定字符串 s 是否属于特定上下文有关文法 G 的语言的判定问题是 PSPACE-完全的。实际上,甚至有些上下文有关文法的固定文法识别问题也是 PSPACE-完全的。

上下文有关文法的空虚(emptiness)问题(给定上下文有关文法 G, 吗?)是不可判定的。

已经证实几乎所有自然语言一般的都可以用上下文有关文法来刻画,但是整个 CSG 类好像比自然语言要大。更糟糕的是,因为上述 CSG 的判定问题是 PSPACE-完全的,这使得它们对于实际使用而言是完全不能运做的,因为一般算法将运行指数时间。关于计算语言学的当前进行中的研究关注于公式化是适度上下文有关语言的其他语言类,这种语言如树-邻接文法、组合范畴文法、连结上下文无关文法和线性上下文无关重写系统的判定问题是可行的。这些形式化所生成的语言适当的位于上下文无关和上下文有关语言之间。

时间: 2024-10-06 12:51:14

上下文有关文法的相关文章

上下文无关文法的表示与存储

[问题描述]把输入的文法存储在计算机内. [基本要求] 1.输入上下文无关文法的一组产生式. 2.将文法按顺序或链式结构存储在计算机内. 3.输出文法的四要素:终极符集合.非终极符集合.规则式集合和开始符. 4.开始符在输入时指明,否则将所输入第一条规则式的左部符号视为开始符. 例如输入如下文法: E->E+T| T T- >T*F| F F->(E)|i 下面是C++代码: #include<iostream> using namespace std; const int

上下文无关文法

1.上下文无关文法定义 文法:它描述语言语法结构的一组形式规则.  上下文无关文法:它定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境.例如,在程序设计语言中,当碰到一个算术表达式时,我们完全可以"就事论事"处理,而不必考虑它所处的上下文.然而,在自然语言中,随便一个词,甚至一个字的意思在不同的上下文中都有可能有不同的意思.幸运的是,当今的程序设计语言都是上下文无关的 . 好像有点抽象,来个例子 "→"表示箭头左边的由箭头右边的定义 把He gave

句法模式识别(二)-正规文法、上下文无关文法

正规文法的特性 1.所有长度有限的语言都是正规的. 2.用正规文法当然能产生无限长串,其中周期重复部分的长度不大于非终止符的长度. 举个例子 在此规则之下,能生成句子 其中周期重复部分为ab,这个例子的非终止符的元素个数为2,故满足2不大于2. 自嵌入特性 我们把上下文无关文法中的正规文法去掉,剩下的那部分我们叫做真正的上下文无关文法. 自嵌入特性是区分真正的上下文无关文法与正规文法的判定标准. 即一个真正的上下文无关文法一定具有自嵌入特性,正规文法具有非自嵌入特性.亦即非自嵌入的上下文无关文法

基于上下文无关文法的句子生成算法

前言 算法来自国外大牛的一篇博客:点击此处可查看 算法不涉及任何人工智能领域知识,仅仅是针对上下文无关文法提出的生成句子的思路. 上下文无关文法 上下文无关文法仅与句子结构有关,与上下文语意无关. 属性|单词 --|-- S |NP VP NP |Det N / Det N NP |I / he / she / Joe VP |V NP / VP Det |a / the / my / his N |elephant / cat / jeans / suit V |kicked / follow

四种类型的文法总结

这是有关编译原理的. 乔姆斯基体系是计算机科学中刻画形式文法表达能力的一个分类谱系,是由诺姆·乔姆斯基于1956年提出的.它包括四个层次: 0-型文法(无限制文法或短语结构文法)包括所有的文法.该类型的文法能够产生所有可被图灵机识别的语言.可被图灵机识别的语言是指能够使图灵机停机的字串,这类语言又被称为递归可枚举语言.注意递归可枚举语言与递归语言的区别,后者是前者的一个真子集,是能够被一个总停机的图灵机判定的语言. 1-型文法(上下文相关文法)生成上下文相关语言.这种文法的产生式规则取如 αAβ

编译原理之形式语言文法分类

高级程序设计语言的三个基本因素: 语法:描述语言成分的构成规则(包括词法规则和语法规则) 语义:描述语法成分的含义 语用:描述语法成分的使用方法 形式语言理论(formal language theory)是用数学方法研究自然语言(如英语)和人工语言(如程序设计语言)的产生方式.一般性质和规则的理论.形式语言是模拟这些语言的一类数学语言,它采用数学符号,按照严格的语法规则构成.从广义上说,形式语言是符号取自某个字母表的字符串的集合.如同自然语言具有语法规则一样,形式语言也是由形式文法生成的.一个

文法分析相关笔记

描述语言语法结构的形式规则称为文法.文法是一个四元组,具体组成如图所示. 文法一共四类,若文法G=(Vn,Vt,P,S)的每个产生式α→β,均有α∈(Vn∪Vt)*,则称G为0型文法.在0型文法上加以扩展,则得到以下文法: 1型文法:G的任何产生式α→β(S→ε除外)均满足左部中文法符号的个数小于右部文法的符号的个数,又称为上下文有关文法,意味着对非终结符的替换考虑必须考虑上下文(eg:有生产式如:αAB→Βcb,假设该生产式符合1型文法的生产式,则非终结符A只有在左边为α右边为B的情况才能转化

1型,2型,3型,文法的区别

1型文法:又称为上下文有关文法, (1):式子左边可以有多个字符,但必须有一个终结符(2):式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符2型文法:又称为上下文无关文法,(1):式子左边只能有一个字符,而且必须是非终结符(2):式子右边可以有多个字符,可以是终结符,也可以是非终结符,8但必须是有限个字符3型文法:又称为正规文法(正规文法又包括左线性文法和右线性文法)(1):式子左边只能有一个字符,而且必须是非终结符(2):式子右边最多有二个字符,而且如果有二个字符必须

自己的理解——编译原理中的四种文法

转载请注明来源http://www.cnblogs.com/qjkobe/p/5332612.html,谢谢. 编译原理学文法类型的时候,会出现乔姆斯基给出的四种文法类型,然而,这些概念太过于抽象了,对于初学者实在很难理解,所以,在这里,我给出一些我自己的理解,希望能对大家有所帮助. 在这之前,你必须对终结符和非终结符有所了解,简单来说,非终结符就是这个东西还能→别的东西(→的标准叫法是定义为),但是终结符就不能了,比如说,分子→原子,原子→夸克.夸克就不能再分了,所以不能由其他粒子定义.(随便