编译原理第三章词法分析内容总结

一、学习内容

  本章主要学习词法分析有关内容,包括对于词法分析器的要求,词法分析器的设计,正规表达式与有限自动机等,其中正规表达式和有限自动机是本章重点。

  词法分析任务是从左至右逐个字符的对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为由单词符号串组成的程序。词法分析器工作过程为源程序—>词法分析器—>单词符号。此处引入单词符号概念:指语言中具有独立意义的最小的语法符号。单词符号常用二元式<单词种别,单词符号的属性值>表示,其中单词符号的属性值指反映单词特性或特征的值。

  词法分析器由输入缓冲区、预处理子程序,扫描缓冲区、扫描器组成。输入缓冲区、预处理子程序将预处理好的子程序放到扫描缓冲区中,扫描缓冲区、扫描器直接进行单词的识别。单词符号的识别有以下几种方法:超前搜索(在单词识别的过程中,通过向前多读几个符号的形式,准确的进行单词的识别,需要注意一旦确定识别到的单词之后,要进行扫描指针的回退,保证单词识别工作的顺利进行),直接分析法(根据读来的第一个字符的种类分别转到各种子程序处理)和状态转换图法。其中状态转换图法需详细介绍,状态转换图是一张用来识别(接受)一定的符号串(单词)的有限方向图,结点代表状态用圆圈表示,箭弧指状态之间的连接,箭弧上的标记代表在射出节点下可能出现的字符或字符串。

  我们把具有相同特征的字放在一起组成一个集合,即所谓的正规集,然后使用一种形式化的方法来表示正规集,即所谓的正规式。若两个正规式U和V所表示的正规集相同,则认为二者等价,记为U = V。把状态转换图再形式化一下即所谓的有限自动机,它有两种:确定的有限自动机(DFA)和非确定的有限自动机(NFA)。一个确定有限自动机(DFA)M是一个五元式:M = (S, ∑, f, s0, F),其中S是一个有限的状态集合,它的每个元素称为一个状态;∑是一个有穷的输入符号的字母表,它的每个元素称为一个输入字符;f是从 S×∑ →S的单值部分映射;s0是S的一个元素,为初始状态,它是唯一的状态;集合F是终止状态的集合,它是S的子集(可空)。一个非确定有限自动机(NFA)M是一个五元式M = (S, ∑, f, S0, F),其中不同的是f是从S×∑*→2的S次方的部分映射,2的S次方表示S的幂集合(所有S的子集组成的集合);状态集合S0是初始状态集合,它是S的子集。正规式与有限自动机具有等价性:对于任何∑上NFAM都可构造一个∑上的正规式V,使得L(V) = L(M) ;对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M) = L(V)。

  确定有限自动机的化简(最少化)指寻找一个状态比DFAM少的DFA M’,使得L(M’) = L(M)。其基本思想为把M的状态集分割为一些不相交的子集,使得任何不同的两个子集状态都是可区别的,而同一个子集中的任何状态都是等价的,最后让每个子集选一个代表,同时消去其他等价状态。化简DFA的一般步骤如下:

  (1) 检查状态转换函数是否为全函数。

所谓全函数,是指每个状态对每个输入符号都有转换,若不是全函数,可以引入一个“死状态”d,d对所有输入符号都转换到d,如果状态s对输入符号a没有转换,那么加上从s到d的a转换。

  (2) 用化简算法进行化简

  (3) 去掉死状态

  具体的运用在习题中体现。

二、知识运用

  1.构造正规式相应的DFA:

  (1)根据题意,得到相应的正规式

  (2)由以上正规式构造相应的DFA

  (3)用子集法对M’进行确定化

   ①构造一张表

   ②把每个子集看成一个状态,得到一个DFAM,且L(M) = L(M’)

  (4) 对M进行化简

   化简算法

   ①对M的状态集S进行划分:把S的终态和非终态分开,分成终态集和非终态集,形成基本分划П,显然这两个子集是可区别的。

   ②假定到某个时候П含有m个子集,П={I(1),I(2),… I(m)},并且属于不同子集的状态是可区别的。检查П中的每个I(i)看能否进一步划分:对于某个I(i)={q1,q2 ,…,qk},若存在一个输入字符a使得I(i)a不全包含在现行П的某个子集I(j)中,就将I(i)一分为二。


三、我的感受

  第三章知识不是特别集中,需要循序渐进的掌握。比如先要知道正规式、正规集,等价、可区别子集等概念才能完成状态图表的转换以及确定化和化简等,进而构造DFA。前两节知识偏向理论,需要了解着进行记忆,第三节正规式和有限自动机偏向逻辑性,需要学会解题。通过上课例题的讲解,我基本掌握了解题步骤和技巧,但是应用起来不够熟练,做了几个题后感觉大部分还可以,部分题目难度较大,需要加强锻炼。总体来说学完第三章对编译原理这门学科有了进一步的了解,接下来将继续认真听讲,利用课堂掌握基本内容,下课进行复习巩固。


猜你喜欢

转载自blog.csdn.net/xmj1886480/article/details/79811005