有限状态机
关于词法记号的识别可以用有限状态机来描述
有限状态机以转化图的形式描述状态的转化
比如对于正规式d->a

其中初始状态为0,匹配到a之后,到达状态1,1的双圈表示最终状态;类似地
正规式d->ab

正规式d->a|b

正规式d->a*

该状态表示可以匹配零个a到达最终状态0,也可以匹配无数个a到达最终状态0
正规式d->a?

表示a出现0次或1次,因此有两个最终状态
因此我们可以将独立地正规式加以组合处理来解决复杂的正规式
比如对关系运算符的匹配

其中诸如 *return...的结果表示指针回退一位,吐出多读入的other字符
再比如标识符的匹配id ->letter (letter | digit )*

其中匹配过程可以概括为三步
-
检查关键字表,如果在表中发现该词法单元则返回相应的记号并退出,否则转向2
-
该词法单元是标识符,在符号表中查找,若找到该词法单元则返回该条目的指针并退出,否则执行3
-
在符号表中建立一个新的条目,把该词法单元填入,并返回此新条目的指针
对于无符号数num ->digit+ (.digit+)? (E (+ | -)? digit+)?

本文详细介绍了词法分析中有限状态机的概念,包括确定有限自动机(DFA)和不确定的有限自动机(NFA)的区别及其构建方法。通过正规式到DFA的转换,展示了NFA到DFA的子集构造法,并讨论了DFA的化简过程,旨在帮助读者深入理解编译原理中的状态机与自动机。
最低0.47元/天 解锁文章

1572





