2.5 总结

不管对哪个语言,词法分析的内在工作原理都是相似的:根据语言的词法规则将输入字节流转换为 Token 流。唯一不同的是各语言的词法规则,所以通常情况下会使用一个词法生成器来构建词法分析器,Lex 是流行的词法生成器。但 Golang 选择了自己实现,其核心 scanner.go 只有 1000 行不到的代码,这也为我们学习 golang 的词法解析提供了好机会。

scanner 最重要的对外接口就是 next 方法,其职责非常简单:根据 golang 的词法规则解析下一个 Token. 其虽然不是严格意义上的 DFA(处理 .. 时需要回滚一个字符), 但大体工作原理是一致的, scanner 是后续语法分析器的重要组成部分。

最后更新于