词法器的设计思路还挺清晰的,尤其适合刚开始接触编译原理的你。河北工业大学这份实验报告讲得细,从状态图到识别函数都有,说白了就是手撸一个能看懂关键字、标识符和浮点数的小工具,挺有成就感的。

状态图的构建挺核心的。每种词汇都画一张图,统一整合成个自动机,既系统又好扩展。你用过状态机写游戏逻辑的,立马就能理解这套路,感觉上手快多了。

几个函数的设计也比较实用,比如 AlphaRecong 识别关键字和变量名、digitRecong 浮点数,还有 OperatorRecong 识别操作符,思路清晰,代码也不难写。想不到函数名还挺好记的,直接看名就知道干啥。

还有一点我觉得挺贴心,就是错误这一块。report_error能精准报错,不用你一点点调试字符流,写调试语句啥的。调词法最怕的就是看不出来哪里错,它这块就做得比较省心。

如果你最近正好要写个小型解释器,或者刚学完编译原理章节,不妨照着这个思路撸一个试试,代码不长,逻辑还蛮清楚,调试起来也不烦。哦对,文末还有一堆相关文章,想延伸一下的话,看看挺不错。