1.词法分析器
(1)关键字 :是由程序语言定义的具有固定意义的标识符。
(2)标识符:表示各种名字。
(3)常数:一般有整型,实型,布尔型,文字性。
(4)运算符
(5)界符
2.词法分析器的设计
(1)输入,预处理(2)单词符号的识别:超前搜索。(关键字识别,标识符识别,常数的识别,算符和界符的识别)
(3)状态转换图
1.转换图是一张有限方向图 ,其中节点代表状态,用圆圈表示,状态之间用箭弧链连接。一张转换图包含有限个状态(即有限个结点),其中有一个被认为是初态,有一个是终态(用双圆圈表示)。
2.一个状态装换图可用于识别一定的字符串。
3.正规表达式与有限自动机
程序语言的描述(词法规则,正规表达式,有限自动机,词法分析程序)
1.正规式与正规集的递归定义
(1)ε和φ是∑上的正规式,它们所表示的正规集分别为{ε}和φ
(2)任何a∈∑,是∑上的一个正规式,他所表示的正规集为{ a }
(3)假定U和V都是∑上的正规式,他们所表示的正规集分别记为L(U)和L(V),那么
(a) (U|V)是正规式,所表示的正规集为L(U)∪L(V)
(b) (UV)是正规式,所表示的正规集为L(U) · L(V)(连接积)
(c) (U)*是正规式,所表示的正规集为 (L(U))*(闭包)
仅由有限次使用(1)(2)(3)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。
2.正规集的关系
设U,V,W是上的∑正规式
(1) U | V = V | U 或的交换律
(2) U | ( V|W ) = ( U|V ) | W 或的结合律
(3) U ( VW ) = ( UV ) W 连接积的结合律
(4) U ( V | W ) = ( UV ) | ( UW ) 分配律
( V | W ) U = VU | WU
(5) εU = Uε = U
3.确定有限自动机(DFA)
(1)S是一个有限的状态集合,它的每个元素我们称为一个状态。
(2)∑是一个有穷的输入符号的字母表,它的每个元素我们称为一个输入字符。
(3)f是从 S×∑ →S的单值部分映射。
(4)s0是S的一个元素,为初始状态,它是唯一的。
(5)状态集合F是终止状态的集合,它是S的子集(可空)。
一个确定有限自动机(DFA)M是一个五元式(S, ∑, δ, s0, F).
DFA M识别功能:对于∑*中任何字α,如果存在一条从初态结点到某个终态结点的道路,这条路上所有的标识符连成的字等于α ,则α可被DFA M所识别(接受,读出)。
4.非确定有限自动机
一个非确定有限自动机(NFA)M是一个五元式(S, ∑, δ, s0, F).
(1)S是一个有限的状态集合,它的每个元素我们称为一个状态。
(2)∑是一个有限的输入符号的字母表,它的每个元素我们称为一个输入字符。
(3)f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的M是非确定)。
(4)状态集合S0是初始状态集合,它是S的子集。
(5)状态集合F是终止状态的集合,它是S的子集。
5.正规式与有限自动机的等价性。
(1)定理1:对于任何∑上NFA M都可构造一个∑上的正规式V,使得 L(V) = L(M) 。其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集。
(2)定理2. 对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M) = L(V)。
6.确定有限自动机的化简
(1)化简的概念
寻找一个状态比DFA M少的DFA M’,使得
L(M’) = L(M)
(2)化简DFA的一般步骤
(1) 检查状态转换函数是否为全函数。
所谓全函数,是指每个状态对每个输入符号都有转换
若不是全函数,可以引入一个“死状态”d,d对所有输入符号都转换到d,如果状态s对输入符号a没有转换,那么加上从s到d的a转换。
(2) 用化简算法进行化简
(3) 去掉死状态
知识应用
三。感悟
而且本章重点正规式与自动机,以及有限自动机的化简。本章知识总体来说不是非常困难,但是也不是很容易理解。对于一些题目应用来说需要的是细心细心再细心,如上面的题目我就在一个小地方错了两三遍,才得出结果。以后对于本章的题目需要看准题目,仔细一步一步走。