Haxe 中的 Haxe 后端?
Haxe backend in Haxe?
我知道Haxe编译器是用OCaml编程语言编写的,这对编译器开发者来说是一个很好的选择。然而最近我发现 Luaxe 项目,它似乎是一个功能齐全的 Lua Haxe 后端,并且是作为纯 Haxe 库开发的。我查看了该项目的代码,它使用某种宏魔法在编译时生成 Lua 源代码。所以我想问一下是否可以在不深入研究 OCaml 和重建编译器的情况下在纯 Haxe 中实现功能齐全的后端?如果可以,有什么限制吗?有没有关于如何在纯 Haxe 中实现后端的好文章?
Haxelang 讨论组中有多个主题可能会为您提供有关此主题的一些信息。一些例子:
Why is the Haxe compiler still in OCAML?
What is missing from Haxe to replace Ocaml as a compiler language?
希望对您有所帮助!
看起来 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 邮件列表上询问,或者联系上述目标的开发人员并请他们分享他们的智慧。
我知道Haxe编译器是用OCaml编程语言编写的,这对编译器开发者来说是一个很好的选择。然而最近我发现 Luaxe 项目,它似乎是一个功能齐全的 Lua Haxe 后端,并且是作为纯 Haxe 库开发的。我查看了该项目的代码,它使用某种宏魔法在编译时生成 Lua 源代码。所以我想问一下是否可以在不深入研究 OCaml 和重建编译器的情况下在纯 Haxe 中实现功能齐全的后端?如果可以,有什么限制吗?有没有关于如何在纯 Haxe 中实现后端的好文章?
Haxelang 讨论组中有多个主题可能会为您提供有关此主题的一些信息。一些例子:
Why is the Haxe compiler still in OCAML?
What is missing from Haxe to replace Ocaml as a compiler language?
希望对您有所帮助!
看起来 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 邮件列表上询问,或者联系上述目标的开发人员并请他们分享他们的智慧。