您的位置:首页 > 其它

编译原理第三章-词法分析

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、课堂感受:
       这章说实在的,真的很难,这还是老师让提前看看再听的,但也听课听的迷迷糊糊的,很多都不知道怎么弄,知识点也比上章多很多,而且很难理解他们的运用,做题做的也感觉有点一知半解,差不多应该这样做的感觉...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编译原理