2015-01-04 49 views
2

我知道Haxe编译器是用OCaml编程语言编写的,对于编译器开发人员来说这是一个不错的选择。但是最近我发现了Luaxe项目,这个项目似乎是Haxe的全功能Lua后端,并且被开发为纯粹的Haxe库。我查看了该项目的代码,并且它正在使用某种宏魔法在编译时生成Lua源代码。所以我想问问,是否可以在纯粹的Haxe中实现全功能的后端,而无需挖掘OCaml并重建编译器?如果是的话,是否有任何限制?有没有关于如何在纯Haxe中实现后端的好文章?Haxe后端在Haxe?

回答

3

它看起来像Luaxe项目正在使用setCustomJSGenerator API。

基本上,这是作为宏运行,使用--macro "setCustomJSGenerator(luaxe.LuaGenerator.use)"或类似的东西。

我从来没有建立一个自定义的后端自己,但你可以用它要么定制做的Javascript,或者,以产生不同的语言,这是在每一种实现源代码:

你可以看看其中的每一个,以了解API的工作原理,它们都具有相似的结构。

在限制条件方面,你必须问问使用过这个的人。我知道Python生成器最终被移入标准的Haxe编译器,所以现在大概在OCaml中 - 也许他们发现它太有限制了?我不确定。

如果您想了解更多关于这种方法的具体限制,我可以在Haxe邮件列表上询问,或联系上述目标的开发人员,并要求他们分享他们的智慧。