实现一个解释器需要一些架构技巧和设计模式,这在其他类型的应用程序中是不常见的,所以我们也要习惯于工程方面的东西。
会介绍解释器的各个阶段——扫描、解析和计算代码,之后逐步添加语言特性,将一个简单的计算器发展成一种成熟的脚本语言。
任何编译器或解释器的第一步都是扫描。扫描器以一系列字符的形式接收原始源代码,并将其分组成一系列的块,我们称之为词法单元(tokens)。这些是有意义的 "单词 "和 "标点",它们构成了语言的语法。
Interpreter Framework
先勾勒出我们的解释器glox的基本形态,这里使用golang实现。