📜  上下文无关文法的分类(1)

📅  最后修改于: 2023-12-03 14:48:48.178000             🧑  作者: Mango

上下文无关文法的分类

上下文无关文法指的是一类形式化的语法规则,它的产生式规则中左侧只有一个非终结符号,右侧则是若干个终结符和非终结符的组合,不考虑符号出现的上下文环境。下面将介绍上下文无关文法的分类。

1. Chomsky 形式文法

Chomsky 形式文法是一种上下文无关文法,它的所有规则都是以下形式:

  • $A \rightarrow BC$,其中 $A,B,C$ 都是非终结符号。
  • $A \rightarrow a$,其中 $A$ 是非终结符号,$a$ 是终结符号。
  • $S$ 是一个指定的非终结符号,称为开始符号。

Chomsky 形式文法中的规则形式非常严格,产生式右侧只能有两个非终结符,或者一个终结符,每个非终结符号只能出现一次。

2. 上下文无关语言的类型

根据产生式规则的形式,上下文无关语言可以分为四类:

  1. 类型 0 文法:没有限制,除了开始符号以外的所有符号都可以在产生式规则中出现,其产生式规则的形式为:$u \rightarrow v$,其中 $u,v$ 是由终结符和非终结符组成的符号串。

  2. 类型 1 文法:上下文有关文法,也就是左侧为一个非终结符号,右侧由非终结符、终结符以及外部环境的符号组成,产生式规则形式为:$u_1 A u_2 \rightarrow u_1 \alpha u_2$,其中 $A$ 是一个非终结符号,$\alpha$ 为一个由终结符和非终结符组成的符号串。

  3. 类型 2 文法:上下文无关文法,其产生式规则形式为:$A \rightarrow \alpha$,其中 $A$ 是一个非终结符号,$\alpha$ 是一个由终结符和非终结符组成的符号串,不考虑上下文环境。

  4. 类型 3 文法:正则文法,产生式规则形式为:$A \rightarrow aB$ 或 $A \rightarrow a$,其中 $A,B$ 是非终结符,$a$ 是终结符。正则文法还包含三种形式:左线性文法、右线性文法和双线性文法。左线性文法的产生式规则形式为:$A \rightarrow Ba$ 或 $A \rightarrow a$,右线性文法的产生式规则形式为:$A \rightarrow aB$ 或 $A \rightarrow a$,双线性文法的产生式规则形式为:$A \rightarrow aB$ 或 $A \rightarrow Ba$。

总结

本文介绍了上下文无关文法的分类,包括 Chomsky 形式文法和上下文无关语言的类型。了解上下文无关文法的分类对程序员来说非常重要,因为在编写编译器、语法分析器等应用中,需要对输入的代码进行语法分析,而上下文无关文法是语法分析的基础。