Skip to content

上下文无关文法

Context-free grammar · CFG

每条产生式左侧是单个非终结符的生成系统。

条目类型
模型

形式陈述

上下文无关文法(CFG)是形式文法在产生式左侧上的一种限制。它仍写作四元组

G=(V,Σ,R,S),

符号、开始项和推导约定沿用通用文法;额外要求每条规则都形如 Aα,其中 AVα(VΣ)。因此一步推导总是在任意上下文中替换一个非终结符:若 Aα,则 uAvuαv

文法生成的语言为

L(G)={wΣ:Sw}.

“上下文无关”指规则能否应用只取决于被替换的单个非终结符 A,不取决于它左右的符号。

直觉

CFG 用递归替换描述嵌套结构。非终结符像尚未展开的结构类别,产生式给出一种合法展开方式;同一非终结符可在任何上下文中按同样规则展开。它比有限自动机多出的力量来自隐式递归深度,可以生成任意层括号或成对计数。文法是生成语言的规格,不自动规定唯一解析、求值顺序或高效解析算法,这些是额外性质。

每个 S 都按同一规则独立展开,叶序列去掉空字后得到 aabb。
例子与边界

文法

SaSbε

生成 {anbn:n0}:例如 SaSbaaSbbaabb。平衡括号可由 SSS(S)ε 描述,递归对应嵌套与连接。

边界语言 {anbncn:n0} 需要同步三个无界计数,不是上下文无关语言。另一个边界是文法本身可能歧义:同一字有多个推导树并不改变成员集合,却会给编程语言解析带来不同结构。

推论与应用

CFG 与下推自动机CFG–PDA 等价定理刻画同一语言类。允许产生式读取上下文并保持非收缩,会得到更强的上下文有关语言;两者在Chomsky 层级中的位置与严格分离应由层级页承担,而不是混入 CFG 定义。语法树记录具体推导结构,Chomsky 范式与 CYK 算法提供标准化和判定方法。

编程语言语法、配置文件、自然语言片段和递归数据格式常用 CFG 描述;解析器再把终结符流转换为 AST,并处理优先级与歧义。

参考资料
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Chs. 5–7。
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,§2.1。
关系图谱9 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系

限定层次等价