文章目录
前面的话
第一章 文法(形式化描述方法之一)
第二章 自动机和文法和正规表达式(形式化描述方法的三种方法)
第三章 图灵机(更高级的形式化手法)
一、 语言及文法
文法系统——一类生成系统
1.1 文法的形式概念
-
字母表:
字符的有限集合——字母表T
例T={a…z, A…Z, 0…9, +, -, …}
字母表的成员不一定必须是单个的字母,而是抽象的、无法再被解释的对象,原子成员。只不过为了方便,我们用单个字符表示。任何对象一定只能由字母表成员构成。 -
字:
由字母表中的字符构成的序列。也称为字符串
空字:长度为0的字符串,无任何字符。 -
运算:
T*是闭包,T+是正则闭包。 -
语言:
字母表T上的语言是T*的子集
-
语言L的幂
1.2 文法
其中VnVt没有交集。
终结符集合:大家公认不需要再解释的符号的集合,称为终结符集合。
非终结符集合:还需要解释的符号的集合,到底是什么还需要靠文法来解释。
P又称文法产生式。
1.3 文法的分类
Chomsky文法体系
1.3.1 0型文法
对生成式不加以限制,则以上定义的文法为0型文法。
非终结符和终结符的或的闭包,相当于非终结符和终结符所能构成的任意串。
1.3.2 1型文法(上下文有关文法)
这种文法越推越多,且不只与阿尔法有关,还需要关注上下文
1.3.3 2型文法(上下文无关文法)
2型文法是1型文法的特例,更加严格。而且阿尔法不需要考虑它所在的上下文,任何时候都可以用。
1.3.4 3型文法(正规文法、左线性文法)
下一节讲自动机,相当于3型文法
1.4 空句子
通过上面的学习,我们知道了,123型文法不允许出现空子句,但是在实际中,如果不引入空子句会使任务复杂度大大提高,因此我们用其他办法来引入空子句。