是否可以在JITted语言中实现仅解释语言?

时间:2018-02-25 00:40:58

标签: compiler-construction grammar interpreter jit j

例如,J是一种语言,据我所知,只有解释,因为编写编译器是不可能的/不切实际的,因为它的语法类型(我远不是专家)。

鉴于我们现在拥有将JIT与元编程能力(如Racket或Scheme)相结合的语言,是否可以将仅解释器语言实现为一组宏来编译成宿主语言而不会损害主语言原始语言行为?

我问这个是因为,据我所知,JIT模糊了#34;编译时与运行时"边界,因此当你运行时,比如一个JITted Scheme程序,它应该能够提供与等效解释器相同的行为。

这是对的吗?

1 个答案:

答案 0 :(得分:1)

程序的JITted版本必须具有与解释版本完全相同的可识别行为,否则实现是错误的。

我想说所有编程语言都可以使用JIT实现,但是生成的机器代码可能必须在执行时进行大量的运行时调用以帮助它,它可能需要挽救解释器难以解决案件。去优化和重新编译也可以提供帮助。

但是最后解释器只是决定执行什么机器代码,JIT可以用另一种方式做同样的事情。