我知道Haxe编译器是用OCaml编程语言编写的,对于编译器开发人员来说这是一个非常好的选择。然而最近我发现了Luaxe项目,它似乎是Haxe的全功能Lua后端,并且被开发为纯Haxe库。我查看了项目的代码,它正在使用某种宏魔法在编译时生成Lua源代码。所以我想问一下,是否可以在纯Haxe中实现功能齐全的后端,而无需深入研究OCaml并重建编译器?如果是这样有任何限制?有没有关于如何在纯Haxe中实现后端的好文章?
答案 0 :(得分:4)
看起来Luaxe项目正在使用setCustomJSGenerator API。
基本上,它使用--macro "setCustomJSGenerator(luaxe.LuaGenerator.use)"
或类似的东西作为宏运行。
我自己从未构建过自定义后端,但您可以使用它来执行自定义Javascript,或者生成不同语言的源代码,这可以在以下每种语言中完成:
您可以查看其中的每一个,以了解API的工作原理,它们的外观都具有相似的结构。
就限制而言,你必须问一个使用过它的人。我知道Python生成器最终被转移到标准的Haxe编译器中,所以现在可能是在OCaml中 - 也许他们发现它太有限了?我不确定。
如果您想了解更多有关此方法的具体限制,我可以询问Haxe邮件列表,或联系上述目标的开发人员,并请他们分享他们的智慧。
答案 1 :(得分:3)
Haxelang讨论组中有几个主题可能会为您提供有关此主题的一些信息。一些例子:
Why is the Haxe compiler still in OCAML?
What is missing from Haxe to replace Ocaml as a compiler language?
希望这有帮助!