文法和语言

1465 字
7 分钟
文法和语言
Warning

含AI生成内容

第二章 文法和语言 · 知识点详解#

🔴 核心(必背/必算) 🟡 理解(会说清) 🟢 了解(有印象) 本章性质:概念+小计算,约 10 分。短语/句柄第 5、6 章反复用,务必吃透。


一、语言与文法的直观概念#

🟡 研究语言的三个方面#

方面英文含义
语法Syntax构成语言句子的各记号之间的组合规律(怎么写才合规)
语义Semantics各记号及其组合的特定含义(是什么意思)
语用Pragmatics记号在实际使用中的来源、使用和影响(怎么用)

🟡 文法的作用#

语言是句子的集合,而句子是无穷的。文法就是一组有限的规则,用有穷的规则集去刻划无穷的句子集合。常用 BNF/EBNF 表示。


二、符号和符号串(🟡 理解)#

  • 字母表 Σ:元素的非空有穷集。
  • 符号:字母表中的元素。
  • 符号串:符号的有穷序列。
  • 空串 ε:不含任何符号的串。
  • 长度 |x|:串所含符号个数。如 |hello|=5,|ε|=0。
  • 连接 xy:把 y 接在 x 后面。特别地 xε = εx = x
  • 方幂x⁰=εx¹=xx²=xx,…,xⁿ = xx…x(n 个)
  • 集合乘积AB = {xy | x∈A, y∈B}
  • 正闭包A⁺ = A¹ ∪ A² ∪ A³ ∪ …(至少一个)。
  • 闭包A* = A⁺ ∪ {ε}(含空串)。

三、文法的形式定义与分类(🔴 核心)#

产生式(规则)#

α → β,其中 α∈V⁺(至少一个符号),β∈V*。V = V_N ∪ V_T,且 V_N ∩ V_T = ∅。

文法四元组#

G = (V_N, V_T, P, S)

  • V_N:非终结符集(语法变量)。
  • V_T:终结符集(单词、记号)。
  • P:产生式集(规则集)。
  • S:开始符号(识别符),S∈V_N,至少在一条规则左部出现。

🔴 Chomsky 文法分类(必背表)#

按表达能力由高到低(限制由松到严)分 0、1、2、3 型:

名称限制条件对应自动机
0短语结构文法α→β,α 中至少含一个非终结符图灵机
1上下文有关文法|β| ≥ |α|(S→ε 例外)线性界限自动机
2上下文无关文法(CFG)α∈V_N,即 A→β(左部为单个非终结符)下推自动机
3正规/正则文法A→a 或 A→aB(右线性)有穷自动机

包含关系:3型 ⊂ 2型 ⊂ 1型 ⊂ 0型(限制越强、能力越弱、集合越小)。

记忆:0型最宽松(图灵机),3型最严格(有穷自动机);型号越大限制越多。


四、推导、句型、句子、语言(🟡 理解)#

推导#

  • 直接推导 ⇒:若 v=γαδ,w=γβδ,且 α→β 是产生式,则 v ⇒ w(一步)。
  • 推导 ⇒:存在 v ⇒ a₀ ⇒ a₁ ⇒ … ⇒ u,记 v ⇒ u(0 步或多步)。
  • ⇒⁺:一步或多步推导。

最左 / 最右推导#

  • 最左推导:每步都替换句型中最左的非终结符。
  • 最右推导(=规范推导):每步都替换最右的非终结符;所得句型叫规范句型

句型 / 句子 / 语言#

  • 句型:若 S ⇒* x,则 x 是文法的句型(可含非终结符)。
  • 句子:若 x 是句型且 x∈V_T*(仅含终结符),则 x 是句子。
  • 语言L(G) = { x | S ⇒* x, x∈V_T* }(全部句子的集合)。

🟡 二义性#

若文法存在某个句子对应两棵不同的语法树(等价地:两个不同的最左推导或两个不同的最右推导),则该文法是二义的

  • 二义性不可判定(不存在通用算法判定任意文法是否二义)。
  • 消除二义性:引入新非终结符、规定运算符优先级和结合性(如表达式文法、if-else 匹配规则)。

五、短语、直接短语、句柄(🔴 核心中的核心)#

αβδ 是文法 G 的一个句型:

  • 短语:若 S ⇒* αAδA ⇒⁺ β,则 β 是句型 αβδ 相对于非终结符 A 的短语。(A 一步或多步推出 β)
  • 直接短语(简单短语):若 A → β恰一步),则 β 是直接短语
  • 句柄:一个句型的最左直接短语,叫该句型的句柄

关系:句柄 ⊆ 直接短语 ⊆ 短语。

  • 短语:A ⇒⁺ β(一步或多步)
  • 直接短语:A ⇒ β(恰一步)
  • 句柄:最左的那个直接短语

🧮 例题(务必练熟)#

文法 E→E+T|E-T,T→T*F|T/F,F→(E)|i,判断并分析句型 E+T*F

证明是句型E ⇒ E+T ⇒ E+T*F,故 E ⇒* E+T*F,是句型。 ✓

分析

  • 相对于 E 的短语:E+T*F(E ⇒⁺ E+T*F)
  • 相对于 T 的短语:T*F(T ⇒ T*F)
  • 直接短语T*F(由 T→T*F 一步得到)
  • 句柄T*F(唯一/最左的直接短语)

六、句型分析方法 & 文法实用性#

🟡 句型分析两大类#

  1. 自顶向下:从开始符出发向下建树,是逐步推导的过程。
  2. 自底向上:从叶子向上归约,是逐步归约的过程,核心是找可归约串(句柄)

🟢 文法实用性#

  • 有害规则:形如 U→U 的规则。
  • 多余规则:不可达规则(用不到)或不可终止规则(推不出终结符串)。
  • ε 规则 A→ε:会使证明和讨论复杂,实用中限制使用。

⚠️ 易错点汇总#

  • 短语 β 必须是所分析句型 αβδ 的一部分,要在句型内出现。
  • 直接短语强调”恰一步 A⇒β”;短语是”一步或多步 A⇒⁺β”。
  • 句柄是”最左直接短语”,不是随便一个直接短语。
  • 最右推导 = 规范推导;对应的逆过程(规范归约)用句柄刻画可归约串。
  • 二义性不可判定(考点)。

📝 常考题型#

  • 填空:规范归约用句柄刻画可归约串;自顶向下的问题是左递归和回溯;3 型文法又称正规文法
  • 简答:什么是二义性?为什么不可判定?
  • 计算:给句型求全部短语/直接短语/句柄;求文法生成的语言(如 S→1S|2S|ε 生成 {1,2}*)。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

文法和语言
https://lingluoa.icu/posts/编译原理/知识点-第2章-文法和语言/
作者
lingluoa
发布于
2026-07-04
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
lingluoa
Hello, I'm lingluoa.
公告
欢迎来到我的博客!不定期更新中。
文章目录
标签
站点统计
文章
53
分类
9
标签
75
总字数
175,771
运行时长
0
最后活动
0 天前
站点信息
构建平台
ESA Pages
博客版本
Firefly v6.15.6
文章许可
CC BY-NC-SA 4.0