自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。
从数学上讲,有限状态自动机是什么概念呢?
输入一个字符串,如果字符串能够接受,则输出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怎么实现呢?举个简单的方法,拿第一个例子来说,可以把它看成有向图,用邻接矩阵表示:
行表示所有的状态,列表示所有的字符,交叉点表示转移函数。
时间: 2024-11-05 14:36:53