eine Syntax Erweiterung, die Können OCaml PPXes Erweiterungen zurückgeben, die von anderen PPX-Erweiterungen analysiert werden?
let a = ReactJS.create_element "div" ~props:(object%js val className = "hello" end)
diese
let a = [%jsx div className="hello"]
ich habe eine PPX die
zu (wie etwas) wandelt es sieht aus wieich OCaml müssen die% js Syntax Erweiterung anschließend transformieren, welches von js_of_ocaml zur Verfügung gestellt wird.
Wie dem auch sei, die PPX-Erweiterungen tun einen einzigen Durchlauf über die Quelle und wenden sie nicht rekursiv an.
Ist es möglich, dies zu tun? Oder muss ich versuchen, das js_of_ocaml PPX zu importieren und es in meinem eigenen auszuführen? Oder ist die beste Methode, um den Zwischenhändler einfach auszuschneiden und die gleiche Transformation in meinem eigenen Code zu erzeugen?
Bearbeiten - Mehr Info:
Also, es scheint nicht, dass die Reihenfolge der PPXes angewandt wird, ist hier die Frage. Ich erhalte die folgende:
+ 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'.
Ich habe das Gefühl, ich bin Herstellung der falschen AST aber (wieder). Der Code verwendet, um die js%object
zu generieren sieht wie folgt aus:
Exp.extension ({txt="js"; loc=loc}, PStr [ Str.eval ( Exp.object_ ( Cstr.mk (Pat.any()) fields ) ) ] )
Fertig - https: // github.com/ocsigen/js_of_ocaml/issues/460 –
So stellt sich heraus, dass das Zeug, das ich brauchte, bereits exportiert wurde - ich musste es einfach in mein Projekt ziehen und jetzt ist alles glücklich! –