給定一個語法擴展,看起來像這樣OCaml PPXes是否可以返回要由其他PPX擴展解析的擴展?
let a = [%jsx div className="hello"]
我已經得到了它轉換爲(像)
let a = ReactJS.create_element "div" ~props:(object%js val className = "hello" end)
我需要的OCaml隨後轉變%JS語法擴展一個PPX,它由js_of_ocaml提供。
但是,從外觀上看,PPX擴展的東西在源代碼上做了一個遍歷,並且不會遞歸應用它。
它可以這樣做嗎?或者我需要嘗試導入js_of_ocaml PPX並在我自己的內部運行它?或者是在我自己的代碼中簡單地刪除中間人併產生相同轉換的最佳方法?
編輯 - 更多信息:
因此,它不會出現被應用PPXes的順序是這裏的問題。我得到如下:
+ ocamlfind ocamlc -c -package reactjs,reactjs_ppx,react,js_of_ocaml,js_of_ocaml.ppx -o tutorial.cmo tutorial.ml File "tutorial.ml", line 3, characters 14-99: Uninterpreted extension 'js'.
我有一種感覺,我雖然(再次)產生錯誤的AST。 用於生成js%object
的代碼如下所示:
Exp.extension ({txt="js"; loc=loc}, PStr [ Str.eval ( Exp.object_ ( Cstr.mk (Pat.any()) fields ) ) ] )
完成 - https:// github。com/ocsigen/js_of_ocaml/issues/460 –
所以事實證明,我需要的東西已經導出 - 我只需要把它放到我的項目中,現在一切都很開心! –