我知道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
- 5. Haxe的Box2d端口(JavaScript)
- 6. WebSockets + Haxe?
- 7. 如何獲得haXe的命令後面安裝HAXE 3
- 8. HAXE,在運行時
- 9. Haxe/php Array.length
- 10. Haxe的代表
- 11. Haxe和Windows API
- 12. 讀線HAXE
- 13. Haxe,ListSort.sort()問題
- 14. ActionScript to Haxe
- 15. Haxe使用@:classCode
- 16. Haxe Int to String
- 17. Haxe有JSFiddle嗎?
- 18. Haxe入門
- 19. haXe的:從haxe.macro.Position
- 20. Haxe類型未找到:客戶端
- 21. 如何開始Haxe?
- 22. Eclipse的調試Haxe
- 23. Starling,Nape,Flash,Haxe Dillemma
- 24. 用haxe nme拖拽
- 25. tink_core Future(haxe)form C++
- 26. vscode launch.json react-native&Haxe
- 27. 調試Haxe(ActionScript 3)
- 28. Haxe IE9 xmlHTTPrequest問題
- 29. Haxe - 生成exe(cpp)
- 30. 動態投射在Haxe