我听说有些语言通过“展开解释器循环”从解释变为编译。
假设我有以下用于 ast 树的伪 c 代码解释器。
int interpret(node)
{
switch(node) {
case PLUS:
return interpret(child(0))+interpret(child(1));
case MINUS:
return interpret(child(0))-interpret(child(1));
}
}
如何展开此循环以创建已编译的程序?
我看到你们所有人都对此表示反对,就像我不知道我在说什么一样,但这里有一段来自维基百科的引述,它准确地说明了我所描述的内容。
“因子最初只是解释,但现在完全编译(非优化编译器基本上展开解释器循环”