我希望能够使用OCaml分析(.ml)文件。 我想将这些文件分解成抽象语法树进行分析。 我尝试使用camlp4但没有成功。 有其他人成功做过吗? 这是解析OCaml文件的最佳方法吗?
你不能使用ocaml编译器的-dparsetree选项吗?
hello.ml:
let _ = print_endline "Hello AST"
$ ocamlc -dparsetree hello.ml
[
structure_item (hello.ml[1,0+0]..[1,0+33])
Pstr_eval
expression (hello.ml[1,0+8]..[1,0+33])
Pexp_apply
expression (hello.ml[1,0+8]..[1,0+21])
Pexp_ident "print_endline" (hello.ml[1,0+8]..[1,0+21])
[
<label> ""
expression (hello.ml[1,0+22]..[1,0+33])
Pexp_constant Const_string("Hello AST",None)
]
]
另请参阅此博客文章,其中提供了有关扩展点语法扩展(OCaml 4.02中编写语法扩展的新方法)的一些信息。在那里可以找到有关各种AST操作模块的信息。