Syntactically correct OCaml AST at the cmd line
I wrote a til about a week ago where I used refmt
to convert reasonml to AST but the output is this:
[
structure_item ([1,0+0]..[1,0+19])
Pstr_module
"Something" ([1,0+7]..[1,0+16])
module_expr ([1,0+17]..[1,0+19])
Pmod_structure
[]
]
While this is a good clue, it's not something I can copy and paste into my OCaml ppx file. It is not OCaml.
What's better is using the dumpast
tool that comes with ppx_tools
(installable with opam install ppx_tools
).
Given a reason file:
module Something {}
When I run:
> cat target.re | refmt --parse re --print ml > target.ml
> ocamlfind ppx_tools/dumpast ./target.ml
It returns:
[{pstr_desc =
Pstr_module
{pmb_name = {txt = "Something"};
pmb_expr = {pmod_desc = Pmod_structure []}}}]
Each of the records it returns is missing a location field and an attributes field, but you should use Ast_helper to produce Parseetree records with the location and attributes fields defaulted for you.
Tweet