Compiler construction Haxe中的Haxe后端?

Compiler construction Haxe中的Haxe后端?,compiler-construction,haxe,Compiler Construction,Haxe,我知道Haxe编译器是用OCaml编程语言编写的,这对于编译器开发人员来说是一个不错的选择。然而,最近我发现了Luaxe项目,它似乎是一个针对Haxe的全功能Lua后端,是作为纯Haxe库开发的。我查看了该项目的代码,它正在使用某种宏魔法在编译时生成Lua源代码。因此,我想问,是否可以在纯Haxe中实现一个功能齐全的后端,而不必深入OCaml并重建编译器?如果有,有什么限制吗?有没有关于如何在纯Haxe中实现后端的好文章?Haxelang讨论组中有几个线程可能会为您提供有关此主题的一些信息。一些

我知道Haxe编译器是用OCaml编程语言编写的,这对于编译器开发人员来说是一个不错的选择。然而,最近我发现了Luaxe项目,它似乎是一个针对Haxe的全功能Lua后端,是作为纯Haxe库开发的。我查看了该项目的代码,它正在使用某种宏魔法在编译时生成Lua源代码。因此,我想问,是否可以在纯Haxe中实现一个功能齐全的后端,而不必深入OCaml并重建编译器?如果有,有什么限制吗?有没有关于如何在纯Haxe中实现后端的好文章?

Haxelang讨论组中有几个线程可能会为您提供有关此主题的一些信息。一些例子:


希望这有帮助

看起来Luaxe项目正在使用API

基本上,它作为一个宏运行,使用
--macro“setCustomJSGenerator(luaxe.LuaGenerator.use)”
或类似的东西

我自己从来没有构建过自定义后端,但您可以使用它来定制Javascript,或者为不同的语言生成源代码,这可以通过以下每种方式完成:

  • Haxe标准库中的JS生成器示例:
  • Luaxe的Lua生成器:
  • Python代码生成器:
  • Dart代码生成器:
您可以查看其中的每一个来了解API是如何工作的,从外观上看,它们都具有相当相似的结构

就限制而言,您必须询问使用过此功能的人。我知道Python生成器最终被移植到了标准的Haxe编译器中,所以现在大概是在OCaml中——也许他们觉得它太局限了?我不确定

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