词法分析器生成与搜索引擎初探

用户输入的字符怎么变成能被程序读懂的指令?词法器的活儿就是干这个的。把输入按规则拆成一个个Token,再一步步变成计算机能识别的状态机。嗯,听着有点抽象,但整个流程其实还挺有意思的。

正规文法入手,先写出一套输入格式的规则。把规则转成NFA(非确定有限自动机),再转成DFA(确定型的)。DFA 好处是效率高,状态明确,用它来驱动程序,速度杠杠的。

代码生成这块也不复杂,最终会用代码模拟 DFA 状态转移,比如:

if (state == 0 && ch == 'a') state = 1;

像这种逻辑结构清晰,调试也方便。尤其你想写个小语言或者搜索引擎词法部分,用这个套路就挺合适。

想深入点的,可以看看这些链接:词法器基础讲得比较通透,C 语言实现也能参考。还有源码类的,比如词法器源码编译原理代码,实战起来更有感觉。

如果你对编译原理感兴趣,或者想自己实现个简单解释器,建议你先搞懂 DFA 怎么跑,再结合源码练手,收获不小。

ppt 文件大小:2.31MB