使用OCaml解析OCaml文件

cma*_*ing 5 parsing ocaml camlp4

我想使用OCaml分析OCaml文件(.ml).我想将文件分解为抽象语法树进行分析.我试图使用camlp4,但没有运气.有没有其他人成功地做过这件事?这是解析OCaml文件的最佳方法吗?

cam*_*ter 6

(我假设您已经了解OCaml的基本部分:如何编写OCaml代码,如何链接模块和库,如何编写构建脚本等等.如果不这样做,请先学习它们.)

最好的方法是使用OCaml编译器本身使用的真正的OCaml代码解析器,因为它根据定义是100%兼容的.

CamlP4还实现了OCaml解析器,但它与真正的解析器稍微不兼容,并且解析树在某种程度上专门用于编写语法扩展:对于任何其他类型的分析都不是很好.

您可能希望.ml使用P4 解析具有语法扩展名的文件.即使在这种情况下,您也应该坚持使用正版解析器:您可以通过P4去除源代码,然后使用正版解析器将结果发送到您的分析器.

要使用OCaml编译器的解析器,最简单的方法是使用compiler-libs.common OCamlFind包.它包含OCaml编译器的解析器和类型检查器.

从修改driver/compile.mlOCaml编译器源开始,它实现了主要的编译阶段:调用预处理器,解析,键入然后代码生成.要解析.ml文件,您应该修改(或简化)Compile.implementation.对于.mli文件Compile.interface.

祝好运.