复习材料,不建议阅读
文法和语言
什么是语言
语言是句子(符号)构成的集合。
它有三个研究方面:
- 语法 —— 符号的构成、组合规律
- 语义 —— 各个符号的特定含义
- 语用 —— 各个符号出现的行为中,它们的来源、使用和影响
符号
首先有字母表,其中的元素为符号,符号构成的有穷序列则为符号串,它包含的符号个数就是符号串的长度。当然,什么符号都没有的就是空符号串()。
符号串 的连接记为 。例如,。
符号串与自身连接为方幂,记为 。例如,。
若集合 中元素都是某字母表 上的符号串,则 是 上的符号串集合。
若 均为 上的符号串集合,则 。例如,设 ,则 。
设符号串集合 ,正闭包 。例如,。
较为常见的定义有非空有限的符号集:非终结符号集 ,终结符号集 。
产生式
产生式是一个序偶对,也叫规则、重写规则、生成式。例如 、。
文法
语言规则的有限集合,通过规则判断句子结构是否合法。在编译原理中为四元组,表示为 ,其中有:
- 非终结符号集
- 终结符号集
- 产生式集(规则集)
- 开始符号(识别符)
例如,文法 ,其中 , ,。
这个文法表示:所有形如 的串。
几种文法
0型文法
也叫短语结构文法。
的 ,而且 里有非终结符号。
1型文法
也叫上下文有关文法。
满足 (除非 )。也就是非终结符能够展开更多符号。
2型文法
也叫上下文无关文法。
1 型基础上,再满足 。也就是 ,左边只有一个非终结符号。
3型文法
也叫正规文法或右线性文法。对应有穷自动机
2 型基础上,产生式全部形如 。也就是左边一个非终结符号,右边只能最右出现非终结符号。
有害文法和多余规则
这样的规则为有害规则。
不可达或不可终止规则为多余规则。例如,
其中 多余。
限制使用 规则(),会使有关文法证明变得复杂。
推导
直接推导
设 是文法 的产生式, ,若有符号串 满足 ,则称 是 的直接推导,或称 是 的直接归约。记作 。
简单来说直接推导就是利用一步规则。多步就是间接了。
存在直接推导序列使得 ,那符号串 就是 的一个推导(归约)
语法树(推导树)
给定文法 ,对于文法 的任意一个句型都存在一个相应的语法树,它满足:
- 树中每一个结点都有一个标记,此标记是 中的一个符号。
- 根的标记是 。
- 若树的一结点 至少有一个子孙,则 。
- 如结点A的子孙结点从左到右次序为 ,则必有产生式 。
例如,
对句型 的推导过程可表示为

同一语法树可以表示同一句型的不同推导,同一句型也可能产生不同的语法树。永远替换最左(右)边非终结符为最左(右)推导。同一语法树最多对应唯一的最左(右)推导。
文法中存在句子对应两颗语法树,则该文法是二义的。并不存在算法判断 2 型文法是否二义,一般用一组无二义性的充分条件构造无二义性文法。
例如,消除二义性可以引入新的非终结符、加ε规则
变为
句型和句子
句型
由开始符号推导出来的就是句型。例如, 中 的 。
句子
属于终结符的句型是句子。例如上例 那就是句子。
语言
文法 的所有句子构成的集合就是它的语言。
语言相同的文法等价。例如, 则 等价。
句型分析
识别一个符号串是否为某文法的一个句型。
可以自顶向下,由根(开始符号)推导;也可以自底向上,将句型串逐步归约。
短语
且
非终结符 经过至少一步推导得到 ,则 是句型 相对于 的短语。
直接短语是 一步直接推导。语法树上子树高度1。
最左直接短语是句柄。
例:已知文法 :
对于句型i*i+i

相对于 短语为 ,对于规则 直接短语为 ,句柄为 。