Я слышал, что некоторые языки переходят от интерпретируемых к компиляции путем "разворачивания цикла интерпретатора".
Скажем, у меня есть следующий интерпретатор псевдокода для дерева аш.
int interpret(node)
{
switch(node) {
case PLUS:
return interpret(child(0))+interpret(child(1));
case MINUS:
return interpret(child(0))-interpret(child(1));
}
}
Как мне развернуть этот цикл для создания скомпилированной программы?
Я вижу, что вы все делаете это, как будто я не знаю, о чем говорю, но вот цитата из Википедии, в которой говорится, что именно я описываю.
"Фактор первоначально интерпретировался, но теперь полностью скомпилирован (не оптимизирующий компилятор в основном разворачивает цикл интерпретатора"