请参阅mli文件的AST

时间:2014-02-14 15:19:04

标签: ocaml camlp4

我希望能够看到某个模块的AST是什么,所以我可以针对它编写一个合适的过滤器。

我现在并没有真正看到我如何'登录'过滤器,例如我尝试匹配,当匹配失败时我记录,我使用Camlp4AstLifter函数将模块转换为树,然后在控制台上打印出来,就像我尝试创建匹配模式一样:

camlp4o -filter Camlp4AstLifter -printer o name_of_file.ml

现在,当我想采用mli文件并使用camlp4过滤器创建此mli文件的默认实现时,这有点短暂。

我无法使用Camlp4AstLifter来查看树,因为这个命令似乎不适用于mli(它再次显示mli作为输出)因此我在尝试匹配时有点盲目。

有人有个主意吗?或者可能暗示如何改进我的过滤/匹配方法(我感觉我还没有做到这一点,非常乏味)。

卡斯帕

2 个答案:

答案 0 :(得分:0)

module type S = <contents of mli file>放入ml文件并应用升降机?

答案 1 :(得分:0)

ocaml编译器有一些未记录的开关,但在执行ocamlc -h时可能会显示(可能要归功于模块Arg),ocamlopt还有更多:

-dsource  (undocumented)
-dparsetree  (undocumented)
-dtypedtree  (undocumented)
-drawlambda  (undocumented)
-dlambda  (undocumented)
-dclambda  (undocumented)
...

我发现-dsource给出了一个漂亮的源代码。你也想要你想要的选择。