2015-01-04 60 views
2

我知道Haxe編譯器是用OCaml編程語言編寫的,對於編譯器開發人員來說這是一個不錯的選擇。但是最近我發現了Luaxe項目,這個項目似乎是Haxe的全功能Lua後端,並且被開發爲純粹的Haxe庫。我查看了該項目的代碼,並且它正在使用某種宏魔法在編譯時生成Lua源代碼。所以我想問問,是否可以在純粹的Haxe中實現全功能的後端,而無需挖掘OCaml並重建編譯器?如果是的話,是否有任何限制?有沒有關於如何在純Haxe中實現後端的好文章?Haxe後端在Haxe?

回答

3

它看起來像Luaxe項目正在使用setCustomJSGenerator API。

基本上,這是作爲宏運行,使用--macro "setCustomJSGenerator(luaxe.LuaGenerator.use)"或類似的東西。

我從來沒有建立一個自定義的後端自己,但你可以用它要麼定製做的Javascript,或者,以產生不同的語言,這是在每一種實現源代碼:

你可以看看其中的每一個,以瞭解API的工作原理,它們都具有相似的結構。

在限制條件方面,你必須問問使用過這個的人。我知道Python生成器最終被移入標準的Haxe編譯器,所以現在大概在OCaml中 - 也許他們發現它太有限制了?我不確定。

如果您想了解更多關於這種方法的具體限制,我可以在Haxe郵件列表上詢問,或聯繫上述目標的開發人員,並要求他們分享他們的智慧。