假设我有一种仅包含以下功能的简单编程语言:
// assignments
var a = 2
// if/else statement and condition expression
if a == 2 {
// print function and strings
print "a == 2"
} else {
// halt program with status code
halt 1
}
真的很简单,只有一个主例程。
我想为基于堆栈的虚拟机生成字节码。生成此字节码的标准方法是什么?我有一个为该程序构建AST的词法分析器和解析器,现在我想为该程序实现代码生成器(字节码编译器)。
如果您感兴趣,我写了一篇有关字节码编译器和解释器here的小文章。它涵盖了您所有的用例,还有更多用例,应该可以被合理地消化。