我希望能够看到某个模块的AST是什么,所以我可以针对它编写一个合适的过滤器。
我现在并没有真正看到我如何'登录'过滤器,例如我尝试匹配,当匹配失败时我记录,我使用Camlp4AstLifter函数将模块转换为树,然后在控制台上打印出来,就像我尝试创建匹配模式一样:
camlp4o -filter Camlp4AstLifter -printer o name_of_file.ml
现在,当我想采用mli文件并使用camlp4过滤器创建此mli文件的默认实现时,这有点短暂。
我无法使用Camlp4AstLifter来查看树,因为这个命令似乎不适用于mli(它再次显示mli作为输出)因此我在尝试匹配时有点盲目。
有人有个主意吗?或者可能暗示如何改进我的过滤/匹配方法(我感觉我还没有做到这一点,非常乏味)。
卡斯帕
答案 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给出了一个漂亮的源代码。你也想要你想要的选择。