作者:刘志樺伟宇佳君 | 来源:互联网 | 2023-05-18 16:59
第三章 词法分析
知识总结:
1、词法分析器的基本知识(任务、构造、基本要求)

2、状态转换图(表示与构造)
示例:

3、正规式与正规集(定义与正规式性质与等价性)
正规式等价性:若两个正规式U,V所表示的正规集相同,则两者等价
4、有限自动机(DFA与NFA)
DFA定义:一个确定有限自动机(DFA)M是一个五元式:M = (S, ∑, f, s0, F)
NFA定义 :一个非确定有限自动机(NFA)M是一个五元式M = (S, ∑, f, S0, F)
区别:
DFA:f是从 S×∑ →S的单值部分映射
NFA:f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的->M是非确定)
状态集合
表示:矩阵表示与状态图表示
***5、正规表达式与有限自动机
等价性:
定理1:对于任何∑上NFA M都可构造一个∑上的正规式V,使得 L(V) = L(M)
其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集
由NFA M构造正规表达式V
方法:
(1)在M转换图上加进X结点和Y结点,从X结点用弧ε连接M的所有初态结点,M的所有终态结点用弧ε连接到Y,得到一个NFA M’,且L(M) = L(M’)
(2)使用替换规则逐步消去M’的所有结点,直到只剩下X结点和Y结点,在消去过程中,逐步使用正规式来标记箭弧

定理2. 对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M) = L(V)
由正规式V构造DFA M(***重点***)
方法:
1.根据V,构造一个NFA M’,使得L(M’) = L(V)
(利用替换规则)
2.将M’确定化,变为DFA M
(涉及到两个定义)


3.化简DFA M

知识应用:

应用:正规式转换DFA
第一步:构造正规式相应的NFA M’,得到状态转换图

第二步:利用子集法将M’确定化

(J集合变化过程)

第三步:把每个子集看成一个状态,得到一个DFA M

第四步:用状态转换图表示

第五步:化简DFA


总结:
这一章学习起来感觉内容有些晦涩难懂,很多知识不理解,都是通过看例题才能明白说的什么。我认为这一章最重点的一部分是由正规式构造DFA,步骤繁琐,理解后真正做起来并不是很难,但是需要很仔细。总之还是需要多练习巩固知识。