词法分析
词法分析器:
词法分析器的功能和输出形式:关键字,标识符,常数,运算符,界符
单词符号的识别:
超前搜索:在单词识别的过程中,通过向前多读几个符号的形式,准确的进行单词的识别。一旦确定识别到的单词之后,需要进行扫描指针的回退,保证单词识别工作的顺利进行
直接分析法:根据读来的第一个字符的种类分别转到各种子程序处理。这些子程序功能就是识别以相应字符开头的各种单词。
状态转换图法:一张有限方向图,识别(接受)一定的符号串(单词)
状态转换图的结构
①结点:代表状态,用圆圈表示
②箭弧:状态之间用箭弧连接
③箭弧上的标记:代表在射出节点下可能出现的字符或字符串
正规表达式与有限自动机:
(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)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。
设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
确定的有限自动机:一个确定有限自动机(DFA)M是一个五元式:
M = (S, ∑, f, s0, F),其中S是一个有限的状态集合,它的每个元素我们称为一个状态
∑是一个有穷的输入符号的字母表,它的每个元素我们称为一个输入字符
f是从 S×∑ →S的单值部分映射
s0是S的一个元素,为初始状态,它是唯一的
状态集合F是终止状态的集合,它是S的子集(可空)
非确定的有限自动机(NFA):
f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的M是非确定)
状态集合S0是初始状态集合,它是S的子集
其他的和上述确定的有限自动机一样
有限自动机的等价
对任何两个有限的自动机M1和M2,若有L(M1)=L(M2),则称M1与M2等价。
化简DFA的一般步骤 :
(1) 检查状态转换函数是否为全函数。
所谓全函数,是指每个状态对每个输入符号都有转换
若不是全函数,可以引入一个“死状态”d,d对所有输入符号都转换到d,如果状态s对输入符号a没有转换,那么加上从s到d的a转换。
(2) 用化简算法进行化简
(3) 去掉死状态
部分习题:
个人总结:我感觉状态转换图和有限自动机是这章的重中之重,课下要好好看看这片儿的内容。有难度,重在理解吧。还是要预习复习,凭课上那点时间学不透也消化不了,只能说要努力。