在词法分析的过程中有限状态机的状态是不断发生变化的,其中最麻烦的是保留字的判断,拿强类型语言中的int
为例
在整个推到过程中需要涉及
i --------> id_Int1四个阶段,其中任意一个阶段只有严格符合预期才能进入下一个阶段,而一旦与预期不符,马上将其视为id。且此时token的类型可以确定为id类型。而保留字只有在所有的条件都符合时才能确定token的类型。但总体而言保留字和id都不是在初始化的过程中确立token类型的。
n --------> id_Int2
t ---------> id_Int3
(空白符) ---------> int
而一开始能确定token类型的有:
- 单一的字符,如 引号
- 数字(在不考虑整形浮点型以及科学计数法的前提下)
因此在词法分析器的设计过程中,能够在第一个字符就能确定类型的token类型,initToken过程中便对token进行类型定义,而其余的只有在不断的读入与有限自动机状态迁移过程中确定。