首页 > 代码库 > 编译原理学习--词法分析(2)

编译原理学习--词法分析(2)

  自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。

  从数学上讲,有限状态自动机是什么概念呢?

    技术分享

  输入一个字符串,如果字符串能够接受,则输出Yes,否则输出No。有限状态自动机是一个五元组,M=(S, Σ, δ, q0, F),其中,Σ-输入字母表,S- 状态集,q0-初始状态,F-终结状态集,δ-转移函数。

  举个例子,什么样的串可以被接受?

    技术分享

  由图可知,Σ={a,b},S={0,1,2},q0=0,F={2},δ函数如下所示:

    技术分享

  如果按照转移函数,字符串输入完毕后,停留在终结状态,那么字符串就可以被接受。

  再来看第二个例子:

    技术分享

  可以发现,转移函数的状态是不确定的,我们称为非确定的有限状态自动机(NFA),那么第一个例子中的就是确定的有限状态自动机(DFA),很明显NFA对接受的判断难度更大,所以为了解决这个问题,我们往往将NFA转换为DFA。那么DFA怎么实现呢?举个简单的方法,拿第一个例子来说,可以把它看成有向图,用邻接矩阵表示:

    技术分享

  行表示所有的状态,列表示所有的字符,交叉点表示转移函数。

    

编译原理学习--词法分析(2)