我目前正在尝试将OCaml程序(具有相当标准/有限的语法)翻译成Racket,我试图看看是否有办法使用camlp4解析中间表示。我尝试使用ocamlyacc和ocamllex构建词法分析器和解析器,但考虑到语法有多大,它变得非常复杂。所以,我四处搜索并发现camlp4已经内置了一些,但我似乎无法查找如何使用它来获取某些OCaml代码的AST。任何文档/示例/想法?另外,如果您对如何做得更好有任何建议,那也很棒!感谢。
答案 0 :(得分:4)
只需使用与编译器一起分发的compiler-libs。您可以直接使用ocaml解析器本身。
这是example of code that reads a .ml file。解析器的文档相当不错。解析后,您将获得Parsetree。