内德·巴切尔德:微语言实现:Calcium
我实现了一个微型语言:Calcium。
它旨在演示像 Python 这样的语言是如何实现的。它包含词法分析器、解析器、抽象语法树(AST)、编译器、字节码以及执行引擎,全部代码仅约 300 行。
我之所以这样做,是因为我经常看到这样的问题:Python 不是解释型语言吗?为什么有人说它是编译型的?(顺便一提,我此前也在博客文章《Python 是解释型还是编译型?是的》中回答过这个问题。)要解释你的 Python 程序永远不会变成明确的、由原生 CPU 指令组成的序列——而这正是人们通常认为“编译”所指的含义——往往并不容易。
因此,我编写了 Calcium,以便下次遇到此类问题时手边可用。我认为,能够展示执行引擎如何读取字节码并执行其指令,将大有裨益。
此外,它也可能成为希望动手实现语言的人的一个有趣起点。由于它几乎什么都不包含,因此有许多简单功能(例如注释?)可以添加。