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

Compiler construction 是否可以在JITted语言中实现仅解释的语言?,compiler-construction,grammar,interpreter,jit,j,Compiler Construction,Grammar,Interpreter,Jit,J,例如,就我所知,J是一种语言,仅在编写编译器时才进行解释,因为它的语法类型不可能/不实用(我远不是专家) 考虑到我们现在已经有了将JIT与元编程功能(如Racket或Scheme)相结合的语言,是否有可能将仅解释器的语言实现为一组宏,以编译为宿主语言,而不影响原始语言行为? 我这样问是因为,据我所知,JIT模糊了“编译时与运行时”的界限,因此,当您运行(比如说JITted Scheme程序)时,它应该能够提供与等效解释器相同的行为 这是正确的吗?程序的JIT版本必须与解释版本具有完全相同的可识别

例如,就我所知,J是一种语言,仅在编写编译器时才进行解释,因为它的语法类型不可能/不实用(我远不是专家)

考虑到我们现在已经有了将JIT与元编程功能(如Racket或Scheme)相结合的语言,是否有可能将仅解释器的语言实现为一组宏,以编译为宿主语言,而不影响原始语言行为?

我这样问是因为,据我所知,JIT模糊了“编译时与运行时”的界限,因此,当您运行(比如说JITted Scheme程序)时,它应该能够提供与等效解释器相同的行为


这是正确的吗?

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

我想说的是,所有编程语言都可以用JIT实现,但是生成的机器代码可能需要进行大量的运行时调用来帮助它执行,对于难以解决的情况,它可能不得不求助于解释器。去优化和重新编译也会有所帮助

但最终,解释器只是决定执行什么机器代码,JIT也可以这样做,但方式不同