词法分析

词法分析

1、词法分析器

词法分析器的功能是输入源程序,输出单词符号。单词符号是一个程序语言的基本语法符号。

(1)、关键字:是由程序语言定义的具有固定意义的标识符。

(2)、标识符:用来表示各种名字,如变量名、数组名、过程名等。

(3)、常数:常数的类型一般有整型、实型、布尔型、文字型等。

(4)、运算符:如+、-、*、/等。

(5)、界符:如逗号、分号、括号、/*、*/等。

2、状态转换图

转换图是一张有限方向图,能够识别(接受)一定的符号串(单词)。

在状态转换图中,结点代表状态,用圆圈表示。状态之间用箭弧连结。箭弧上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的输入字符或字符类。

一张状态转换图只包含有限个状态(即有限个结点),其中有一个被认为是初态,而且实际上至少要有一个终态(用双圈表示)。

终结态上打个星号*意味着多读进了一个不属于标识符部分的字符,应把它退还给输入串。

3、正规表达式

正规式与正规集的定义

    (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

4、确定有限自动机(DFA)

定义:一个确定有限自动机(DFA)M是一个五元式:M = (S, ∑, f, s0, F),其中:

(1)、S是一个有限的状态集合,它的每个元素我们称为一个状态
(2)、∑是一个有穷的输入符号的字母表,它的每个元素我们称为一个输入字符
(3)、f是从 S×∑ →S的单值部分映射
(4)、s0是S的一个元素,为初始状态,它是唯一的
(5)、状态集合F是终止状态的集合,它是S的子集(可空)

        DFA M识别功能:对于∑*中任何字α,如果存在一条从初态结点到某个终态结点的道路,这条路上所有的标识符连成的字等于α ,则α可被DFA M所识别(接受,读出)。

5、非确定的有限自动机(NFA)

定义:一个非确定有限自动机(NFA)M是一个五元式M = (S, ∑, f, S0, F),其中

(1)、S是一个有限的状态集合,它的每个元素我们称为一个状态。
(2)、∑是一个有限的输入符号的字母表,它的每个元素我们称为一个输入字符。
(3)、f是从S×∑*→2S 的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的M是非确定)。
(4)、状态集合S0是初始状态集合,它是S的子集。

(5)、状态集合F是终止状态的集合,它是S的子集。

6、正规式与有限自动机的等价性

(1)、对于任何∑上NFA M都可构造一个∑上的正规式V,使得  L(V) = L(M) 。其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集。

(2)、对于∑上的每一个正规式V,存在一个∑上的DFA M,使得L(M) = L(V) 。

    ①、假定I是M’的状态集的子集,定义I的ε闭包ε_CLOSURE(I)为:
(a)若q∈I,则q∈ε_CLOSURE(I)
(b)若q∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于ε_CLOSURE(I) ;

     ②、 假定I是M’的状态集的子集,a ∈ ∑,定义  Ia =ε_CLOSURE(J)  其中,J是所有那些可从I中的某一状态结点出发经过一条a弧而到达的状态结点的全体。

7、确定有限自动机的化简

(概念):寻找一个状态比DFA M少的DFA M’,使得L(M’) = L(M)。

化简步骤:(1) 检查状态转换函数是否为全函数。
        (2) 用化简算法进行化简。

        (3) 去掉死状态。

课后题:

学习感受:

        学习完这一章之后对词法分析有了一个系统的了解,这一章中状态转换图,正规表达式,有限自动机,正规式与有限自动机之间的关系以及有限自动机化简都是重点,都要掌握。虽然对于知识有一定的理解了,但是把他运用于做题上还是有些困难,特别是在正规表达式与有限自动机转化题目中,需要多加练习巩固深入。

猜你喜欢

转载自blog.csdn.net/xinqi_789/article/details/79809132