Anthony007

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

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

    

  输入一个字符串,如果字符串能够接受,则输出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怎么实现呢?举个简单的方法,拿第一个例子来说,可以把它看成有向图,用邻接矩阵表示:

    

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

    

posted on 2015-02-01 14:11  Anthony007  阅读(659)  评论(0编辑  收藏  举报