Haxe中的Haxe后端?

4

我知道Haxe编译器是用OCaml编写的,这对编译器开发者来说是一个相当不错的选择。然而最近我发现了Luaxe项目,它似乎是一个完整的Lua后端,用纯Haxe库开发而成。我查看了该项目的代码,发现它在编译时使用某种宏技巧生成Lua源代码。所以我想问一下,是否可能在不深入了解OCaml并重新构建编译器的情况下,用纯Haxe实现一个完整的后端?如果可以,是否存在任何限制?有没有好的文章介绍如何在纯Haxe中实现后端?

2个回答

5
看起来Luaxe项目正在使用setCustomJSGenerator API。
基本上,它作为宏运行,使用类似于--macro "setCustomJSGenerator(luaxe.LuaGenerator.use)"的命令。
我从未自己构建过自定义后端,但是您可以使用它来生成不同语言的源代码或定制JavaScript,这些都在下面链接中实现:
- Haxe标准库中的示例JS生成器: https://github.com/HaxeFoundation/haxe/blob/development/std/haxe/macro/ExampleJSGenerator.hx - 来自Luaxe的Lua生成器: https://github.com/PeyTy/LuaXe/blob/master/luaxe/LuaGenerator.hx - Python代码生成器: https://github.com/frabbit/hx2python/blob/development/src/python/gen/PythonGenerator.hx - Dart代码生成器: https://bitbucket.org/AndrewVernon/hx2dart/src/203d61b299c88ca3a2b043335d92b71546ce1239/src/haxe/macro/DartGenerator.hx?at=development 您可以查看每个链接以了解API的工作原理,它们的结构看起来非常相似。
就限制而言,您需要询问已使用此方法的人。我知道Python生成器最终被移动到标准Haxe编译器中,因此现在可能在OCaml中 - 也许他们发现它太有限了?我不确定。
如果您想要了解此方法的特定限制,请在Haxe邮件列表上或与上述目标的开发人员联系并请求分享他们的智慧。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接