我知道Haxe编译器是用OCaml编程语言编写的,对于编译器开发人员来说这是一个不错的选择。但是最近我发现了Luaxe项目,这个项目似乎是Haxe的全功能Lua后端,并且被开发为纯粹的Haxe库。我查看了该项目的代码,并且它正在使用某种宏魔法在编译时生成Lua源代码。所以我想问问,是否可以在纯粹的Haxe中实现全功能的后端,而无需挖掘OCaml并重建编译器?如果是的话,是否有任何限制?有没有关于如何在纯Haxe中实现后端的好文章?Haxe后端在Haxe?
2
A
回答
3
它看起来像Luaxe项目正在使用setCustomJSGenerator API。
基本上,这是作为宏运行,使用--macro "setCustomJSGenerator(luaxe.LuaGenerator.use)"
或类似的东西。
我从来没有建立一个自定义的后端自己,但你可以用它要么定制做的Javascript,或者,以产生不同的语言,这是在每一种实现源代码:
- 例如JS发电机的HAXE标准库中:https://github.com/HaxeFoundation/haxe/blob/development/std/haxe/macro/ExampleJSGenerator.hx
- 的Lua的发电机从Luaxe:https://github.com/PeyTy/LuaXe/blob/master/luaxe/LuaGenerator.hx
- 甲Python代码发生器:https://github.com/frabbit/hx2python/blob/development/src/python/gen/PythonGenerator.hx
- 飞镖代码发生器:https://bitbucket.org/AndrewVernon/hx2dart/src/203d61b299c88ca3a2b043335d92b71546ce1239/src/haxe/macro/DartGenerator.hx?at=development
你可以看看其中的每一个,以了解API的工作原理,它们都具有相似的结构。
在限制条件方面,你必须问问使用过这个的人。我知道Python生成器最终被移入标准的Haxe编译器,所以现在大概在OCaml中 - 也许他们发现它太有限制了?我不确定。
如果您想了解更多关于这种方法的具体限制,我可以在Haxe邮件列表上询问,或联系上述目标的开发人员,并要求他们分享他们的智慧。
3
Haxelang讨论组有几个线程可能会为您提供有关此主题的一些信息。一些例子:
Why is the Haxe compiler still in OCAML?
What is missing from Haxe to replace Ocaml as a compiler language?
希望这有助于!
相关问题
- 1. 在HAXE
- 2. 在HAXE
- 3. 在HAXE
- 4. Haxe的Box2d端口(JavaScript)
- 5. 如何获得haXe的命令后面安装HAXE 3
- 6. HAXE,在运行时
- 7. haXe的:从haxe.macro.Position
- 8. Haxe使用@:classCode
- 9. Haxe的代表
- 10. Haxe和Windows API
- 11. Haxe Int to String
- 12. Haxe Web Framework
- 13. Haxe类型未找到:客户端
- 14. 调试Haxe(ActionScript 3)
- 15. Haxe IE9 xmlHTTPrequest问题
- 16. Eclipse的调试Haxe
- 17. Haxe for loop只使用最后一项
- 18. Flashdevelop haxe(flash)调试器
- 19. HAXE - 代码拒绝工作
- 20. 与Haxe一起使用ACRA
- 21. Haxe闪存硬件优化
- 22. Haxe:字段返回值
- 23. Haxe和XPath有友谊吗?
- 24. 用于js库的Haxe externs
- 25. Haxe和Socket.IO for web&mobile
- 26. 生成EaselJS的Haxe externs
- 27. 使用Haxe输出JavaScript
- 28. Haxe Javascript:防止'绑定'代?
- 29. Haxe/OpenFL/Flash继承问题
- 30. 任何Haxe GC技巧?