编译原理第三章-词法分析
2018-04-04 21:40
351 查看
第三章1、知识点图
重点记忆:
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)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。
注:|(或)、 ·(连接)、*(闭包,任意有限次的自重复连接)
运算的优先级为:“ * ” > “ · ” > “ | ”
正规式的性质
设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
定理1:对于任何∑上NFA M都可构造一个∑上的正规式V,使得 L(V) = L(M)
其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集
2、有限自动机:
化简DFA的一般步骤
(1) 检查状态转换函数是否为全函数。
所谓全函数,是指每个状态对每个输入符号都有转换
若不是全函数,可以引入一个“死状态”d,d对所有输入符号都转换到d,如果状态s对输入符号a没有转换,那么加上从s到d的a转换。
(2) 用化简算法进行化简
(3) 去掉死状态
基本思想
把M的状态集分割为一些不相交的子集,使得任何不同的两个子集状态都是可区别的,而同一个子集中的任何状态都是等价的,最后让每个子集选一个代表,同时消去其他等价状态
化简算法
①对M的状态集S进行划分:
把S的终态和非终态分开,分成终态集合非终态集,形成基本分划П,显然这两个子集是可区别的。
②假定到某个时候П含有m个子集,
记П={I(1),I(2),… I(m)}
并且,属于不同子集的状态是可区别的。
检查П中的每个I(i)看能否进一步划分:
对于某个I(i)
另I(i)={q1 ,q2 ,…,qk}
若存在一个输入字符a使得I(i)a不全包含在现行П的某个子集I(j)中,就将I(i)一分为二
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)所得到的表达式才是∑上的正规式,仅由这些正规式所表示的字集才是∑上的正规集。
注:|(或)、 ·(连接)、*(闭包,任意有限次的自重复连接)
运算的优先级为:“ * ” > “ · ” > “ | ”
正规式的性质
设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
定理1:对于任何∑上NFA M都可构造一个∑上的正规式V,使得 L(V) = L(M)
其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集
2、有限自动机:
化简DFA的一般步骤
(1) 检查状态转换函数是否为全函数。
所谓全函数,是指每个状态对每个输入符号都有转换
若不是全函数,可以引入一个“死状态”d,d对所有输入符号都转换到d,如果状态s对输入符号a没有转换,那么加上从s到d的a转换。
(2) 用化简算法进行化简
(3) 去掉死状态
基本思想
把M的状态集分割为一些不相交的子集,使得任何不同的两个子集状态都是可区别的,而同一个子集中的任何状态都是等价的,最后让每个子集选一个代表,同时消去其他等价状态
化简算法
①对M的状态集S进行划分:
把S的终态和非终态分开,分成终态集合非终态集,形成基本分划П,显然这两个子集是可区别的。
②假定到某个时候П含有m个子集,
记П={I(1),I(2),… I(m)}
并且,属于不同子集的状态是可区别的。
检查П中的每个I(i)看能否进一步划分:
对于某个I(i)
另I(i)={q1 ,q2 ,…,qk}
若存在一个输入字符a使得I(i)a不全包含在现行П的某个子集I(j)中,就将I(i)一分为二
2、验证使用(习题处理):
3、课堂感受:
这章说实在的,真的很难,这还是老师让提前看看再听的,但也听课听的迷迷糊糊的,很多都不知道怎么弄,知识点也比上章多很多,而且很难理解他们的运用,做题做的也感觉有点一知半解,差不多应该这样做的感觉...
相关文章推荐
- 编译原理第三章词法分析内容总结
- 编译原理-第三章-词法分析
- 编译原理第三章词法分析内容总结
- 编译原理第三章——词法分析
- 编译原理-词法分析01-扫描程序
- 编译原理-词法分析04-NFA & 代码实现
- 编译原理第三章总结
- 【编译原理】LL(1)文法分析全过程(FIRST/FLLOW/SELECT集等)实现(c++语言)
- linux下编译原理分析
- 编译原理第三章课后题
- 【编译原理】自下而上的语法分析之LR分析法
- 文法G[E]分析表分析字符串(i+)-编译原理
- 编译原理:递归向下分析程序建立语法分析树的Java实现(二)
- 关于Basic程序解释器及编译原理的简单化(1)--词法分析和代数式求值
- 编译原理上机作业4——LR(0)分析的DFA生成
- 编译原理-词法分析05-正则表达式到DFA-01
- 编译原理 Switch语句的分析
- Android OTA在线升级二(升级包编译原理分析) .
- 语法分析_编译原理
- 编译原理-词法分析程序1