文法和语言
1465 字
7 分钟
文法和语言
Warning
含AI生成内容
第二章 文法和语言 · 知识点详解
🔴 核心(必背/必算) 🟡 理解(会说清) 🟢 了解(有印象) 本章性质:概念+小计算,约 10 分。短语/句柄第 5、6 章反复用,务必吃透。
一、语言与文法的直观概念
🟡 研究语言的三个方面
| 方面 | 英文 | 含义 |
|---|---|---|
| 语法 | Syntax | 构成语言句子的各记号之间的组合规律(怎么写才合规) |
| 语义 | Semantics | 各记号及其组合的特定含义(是什么意思) |
| 语用 | Pragmatics | 记号在实际使用中的来源、使用和影响(怎么用) |
🟡 文法的作用
语言是句子的集合,而句子是无穷的。文法就是一组有限的规则,用有穷的规则集去刻划无穷的句子集合。常用 BNF/EBNF 表示。
二、符号和符号串(🟡 理解)
- 字母表 Σ:元素的非空有穷集。
- 符号:字母表中的元素。
- 符号串:符号的有穷序列。
- 空串 ε:不含任何符号的串。
- 长度 |x|:串所含符号个数。如 |hello|=5,|ε|=0。
- 连接 xy:把 y 接在 x 后面。特别地
xε = εx = x。 - 方幂:
x⁰=ε,x¹=x,x²=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(唯一/最左的直接短语)
六、句型分析方法 & 文法实用性
🟡 句型分析两大类
- 自顶向下:从开始符出发向下建树,是逐步推导的过程。
- 自底向上:从叶子向上归约,是逐步归约的过程,核心是找可归约串(句柄)。
🟢 文法实用性
- 有害规则:形如
U→U的规则。 - 多余规则:不可达规则(用不到)或不可终止规则(推不出终结符串)。
- ε 规则
A→ε:会使证明和讨论复杂,实用中限制使用。
⚠️ 易错点汇总
- 短语 β 必须是所分析句型 αβδ 的一部分,要在句型内出现。
- 直接短语强调”恰一步 A⇒β”;短语是”一步或多步 A⇒⁺β”。
- 句柄是”最左直接短语”,不是随便一个直接短语。
- 最右推导 = 规范推导;对应的逆过程(规范归约)用句柄刻画可归约串。
- 二义性不可判定(考点)。
📝 常考题型
- 填空:规范归约用句柄刻画可归约串;自顶向下的问题是左递归和回溯;3 型文法又称正规文法。
- 简答:什么是二义性?为什么不可判定?
- 计算:给句型求全部短语/直接短语/句柄;求文法生成的语言(如
S→1S|2S|ε生成{1,2}*)。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
复习提纲
编译原理编译原理复习提纲(考试向)
2
编译原理知识点
编译原理编译原理知识点(考试向)
3
编译程序概论
编译原理编译原理知识点(考试向)
4
词法分析
编译原理编译原理知识点(考试向)
5
自顶向下语法分析
编译原理编译原理知识点(考试向)
随机文章随机推荐










