二义性

若文法 中存在某个句子对应两棵不同的语法树(或有两个不同的最左/最右推导),则称 二义性的。

二义性示例

句子 存在两棵不同的语法树:

  1. :先乘后加
  2. :先加后乘

重点 二义性概念及 示例

运算符优先级消除二义性

二义性消除不存在形式化方法,依赖人工理解和设计。

通过引入优先级和结合性消除:

  • 优先级:* 高于 +
  • 结合性:左结合(递归在左边)

Chomsky 文法分类

0 型文法(短语结构文法)

产生式形如 且至少含一个非终结符。

对应的自动机:图灵机

1 型文法(上下文有关文法)

产生式形如 除外)。

对应的自动机:线性界限自动机

2 型文法(上下文无关文法)

产生式形如

对应的自动机:下推自动机

3 型文法(正规文法)

产生式形如 (右线性),或 (左线性)。

对应的自动机:有限自动机

类型名称产生式约束对应自动机
0 型短语结构文法无限制图灵机
1 型上下文有关线性界限自动机
2 型上下文无关下推自动机
3 型正规文法有限自动机

(包含关系)

Chomsky 语言分类

每种文法定义一类语言,语言类型与文法类型一一对应:

语言类型名称由何种文法产生对应自动机封闭性
0 型语言递归可枚举语言0 型文法(短语结构文法)图灵机对并、连接、闭包封闭
1 型语言上下文有关语言1 型文法(上下文有关文法)线性界限自动机对并、交、连接、闭包封闭
2 型语言上下文无关语言2 型文法(上下文无关文法)下推自动机对并、连接、闭包封闭,对交不封闭
3 型语言正规语言3 型文法(正规文法)有限自动机对并、交、补、连接、闭包封闭

语言类型的包含关系:

  • 正规语言(3 型)⊂ 上下文无关语言(2 型)
  • 是上下文无关语言(2 型),但不是正规语言(3 型)
  • 上下文有关语言(1 型)可描述 等需多个等长序列匹配的语言

重点 语言类型与文法类型对应关系、各类型包含关系和封闭性质。

文法 语言设计

重点 根据语言设计文法是考试常考题型。

示例:

  • (2 型,非 3 型)
  • (2 型)
  • 奇整数文法设计

重点 各类型对应自动机需记忆,0 型→3 型递进关系。