【编译原理】文法的分类:四种文法、语言定义+示例+它们之间的关系

本文详细介绍了Chomsky提出的文法体系,包括0型(短语结构文法)、1型(上下文有关文法)、2型(上下文无关文法)和3型(正则文法),并阐述了这四种文法之间的关系及其生成的语言类型。

        Chomsky根据对产生式要求的不同,将文法分为4类,通常称为Chomsky体系。

        设文法G=(V,T,P,S),还有一种表示方法为:G=(V_{N}V_{T},P,S),两者是相同的,本文采用前者。文法定义和约定(比如下文中大小写字母,\alpha \beta为什么会出现在那个位置,为什么没有全部大写或者全部小写)可见博客:https://innocence.blog.youkuaiyun.com/article/details/105498053

        快速查阅:0型文法也叫短语结构文法,PSG。0型语言PSL也叫短语结构语言或递归可枚举集。

                         1型文法也叫上下文有关文法,CSG。1型语言CSL也叫上下文有关语言。

                         2型文法也叫上下文无关文法,CFG。2型语言CFL也叫上下文无关语言。

                         3型文法也叫正则文法或正规文法,RG。3型语言RL也叫正则语言或正规语言。分左线性文法和右线性文法。

一、0型文法、语言

        若P中任一产生式都有一般形式\alpha \rightarrow \beta ,\alpha \in V^{+},\beta \in V^{*},且对\alpha \beta不加任何限制,则称G为0型文法,也叫短语结构文法,记为PSG(Phrase Structure Grammar)。

        由0型文法生成的语言L(G)称为0型语言,也叫短语结构语言(PSL Phrase Structure Language)递归可枚举集(recursively enumerable set)。它可由图灵机识别。

        示例:

二、1型文法、语言

        有两种定义。

        定义一:若0型文法中所有产生式具有形式\alpha _{1}A\alpha _{2}\rightarrow \alpha _{1}\beta A\alpha _{2},其中\alpha _{1}\alpha _{2}\in V^{*}\beta \in V^{+}A\in V,则称G为1型文法,也叫上下文有关文法,记为CSG(Context Sensitivie Grammar)。只有当非终结符A的前后分别为\alpha _{1}\alpha _{2}时,才能将A替换为\beta

        定义二(更好理解):对于\forall \alpha \rightarrow \beta\in P,均有\mid \alpha \mid \leqslant \mid \beta \mid(绝对值为字符串的长度)成立,\alpha \beta\in V^{+},则称G为1型文法上下文有关文法(CSG)

        ps:根据定义,含有\varepsilon的文法不是1型文法,但根据实际需求,将\varepsilon-产生式作为特例,它也是1型文法。

        由1型文法产生的语言L(G)称为1型语言上下文有关语言CSL(CSL Context Sensitivie Language)。它可由线性限界自动机识别。

        示例:

   三、2型文法、语言

        若1型文法G中所有的产生式具有形式\forall \alpha \rightarrow \beta\in P,均有\mid \alpha \mid \leqslant \mid \beta \mid,且A\in V(和1型文法的区别),\beta \in V^{+},则称G为2型文法,也叫上下文无关文法(CFG Context Free Grammar)。

        由2型文法产生的语言L(G)称为2型语言上下文无关语言CFL(CSL Context Free Language)。它可由下推自动机识别。

        ps:若允许\varepsilon-产生式存在,则CFG产生形式为A\rightarrow \betaA\in V\beta \in V^{*}

        示例:

四、3型文法、语言

        若2型文法G中仅含有形如:A\rightarrow aBA\rightarrow a的产生式,其中AB\in Va\in T,则称G为3型文法,也叫正则文法(RG Regular Grammar)或者正规文法

        由3型文法产生的语言L(G)称为3型语言正则语言(RL Regular Language)或者正规语言。它可由有限自动机识别。

        正规语言可由正规表达式表示。

        右线性文法:3型文法G中仅含形如A\rightarrow aBA\rightarrow a的产生式,则称G为右线性文法。

        左线性文法:3型文法G中仅含形如A\rightarrow BaA\rightarrow a的产生式,则称G为左线性文法。

        ps:若一个文法既含有左线性又含有右线性表达式,它不一定是3型文法。

        示例:定义已经比较直观了。

五、四者之间的关系

        四种文法之间的关系是将产生式作进一步限制而定义的,他们呈逐级包含关系。即如果是3型文法那么肯定是2型文法,是2型文法肯定是1型文法……以此类推。

        

### 超越乔姆斯基四种文法类型的其他文法形式及其应用 尽管乔姆斯基的四类文法(正则文法、上下文无关文法、上下文有关文法和无约束文法)涵盖了大部分的形式语言描述需求,但在某些领域中,研究者们发现了一些更复杂的文法模型来解决特定问题。以下是几种超越传统乔姆斯基体系的文法形式: #### 1. **树邻接文法 (Tree Adjoining Grammar, TAG)** 树邻接文法是一种扩展了上下文无关文法能力的形式化工具,主要用于自然语言处理中的句法分析[^5]。它通过允许子树之间的嵌套组合操作,能够更好地捕捉自然语言中的长距离依赖关系。这种特性使得TAG非常适合用于解析复杂语义结构的语言现象。 ```python def tree_adjoining_grammar_example(): """ A simple example of how a Tree Adjoining Grammar might represent structures. This is conceptual and not executable code. """ root_tree = {"NP": ["John"], "VP": [{"V": "saw"}, {"PP": [{"P": "with"}, {"NP": "a telescope"}]}]} adjunction_tree = {"AdvP": [{"Adv": "quickly"}, {}]} # Combine trees using substitution or adjoining rules... combined_structure = {**root_tree["VP"][0], **adjunction_tree} return combined_structure ``` #### 2. **范畴文法 (Categorial Grammar, CG)** 范畴文法基于函数式逻辑的思想构建句子成分间的组合方式。每一个词都被赋予一个类别标签,并定义其如何与其他词语相互作用形成更大的表达单位[^6]。这类方法强调词汇本身的语法属性,在机器翻译等领域有着广泛应用价值。 #### 3. **依存文法 (Dependency Grammar, DG)** 不同于传统的短语结构规则,依存文法则关注单词之间直接的关系网络表示。在这种框架下,每个句子由一组节点组成,其中心概念围绕着支配原则展开——即某个核心项控制其它附属项目的位置排列[^7]。这种方法特别适用于信息抽取任务当中。 #### 应用场景探讨 上述提到的各种高级文法形式各有侧重的应用方向: - 树邻接文法因其强大的结构性建模能力常应用于语音合成系统的设计; - 范畴文法则因简洁明快的特点成为自动问答系统的优选方案之一; - 至于依存文法,则由于其实现简单高效而在社交媒体情绪分析等方面占据重要地位[^8]。 ### 结论 虽然乔姆斯基提出的经典分类奠定了现代计算语言学的基础,但随着技术进步与实际需求的增长,更多创新型文法不断涌现并得到实践验证。每种新型态都有助于我们更加深入理解人类交流的本质特征。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值