如何使用松露语言实现框架实现语言编译器



所以我正在研究如何使用Truffle创建语言编译器。为了解决这个问题,我们假设这种语言叫做Emerald。

Emerald是一种静态编译语言,它像Java一样运行在JVM上。

翡翠的编译器是一个叫做emeraldc的程序。编译器emeraldc将编译像Hello这样的源文件。

我没有发现任何使用Truffle创建这样一种语言的例子。我找到的所有语言例子都是解释性语言。例如,似乎没有一个编译成类文件。

使用GraalVM的Truffle框架语言是作为解释器实现的,但您仍然可以获得编译器。

语言通常本质上不是编译或解释的(例如,您可以解释C语言并编译Javascript)。甚至还有混合使用两者的情况:例如,您的Emerald编译器从Emerald编译到Java字节码,这些字节码可以在Java虚拟机中解释并及时编译。

使用GraalVM的Truffle框架,典型的设置是你为你的语言实现一个解释器,GraalVM将通过对解释器的部分求值给你一个JIT编译器。你可能想检查一下这个介绍。

如果你想提前编译,Truffle也支持。

但是,目前还没有将AOT或JIT编译输出为Java字节码的配置。

最新更新