Ocaml 请参阅mli文件的AST
我希望能够看到某个模块的AST是什么,这样我就可以针对它编写一个合适的过滤器 因为我现在不知道如何“记录”过滤器,例如,我尝试匹配,当匹配失败时,我记录,我使用CAMLP4AST升降机函数将模块转换为树,然后在控制台上打印出来,我尝试创建匹配模式,如下所示:Ocaml 请参阅mli文件的AST,ocaml,camlp4,Ocaml,Camlp4,我希望能够看到某个模块的AST是什么,这样我就可以针对它编写一个合适的过滤器 因为我现在不知道如何“记录”过滤器,例如,我尝试匹配,当匹配失败时,我记录,我使用CAMLP4AST升降机函数将模块转换为树,然后在控制台上打印出来,我尝试创建匹配模式,如下所示: camlp4o -filter Camlp4AstLifter -printer o name_of_file.ml 现在,当我想要获取一个mli文件并使用camlp4过滤器来创建这个mli文件的默认实现时,这有点不够 我无法使用CAML
camlp4o -filter Camlp4AstLifter -printer o name_of_file.ml
现在,当我想要获取一个mli文件并使用camlp4过滤器来创建这个mli文件的默认实现时,这有点不够
我无法使用CAMLP4AST升降机查看树,因为此命令似乎不适用于mli,它将mli再次显示为输出,因此我在尝试匹配时有点盲目
有人有主意吗?或者是关于如何改进我的过滤/匹配方法的提示,我觉得我还没有做好,非常乏味
Kasper将模块类型S=放入ml文件并应用升降机?ocaml编译器有一些未记录的开关,但在执行ocamlc-h时会显示这些开关,这可能要感谢模块Arg,ocamlopt还有更多:
-dsource (undocumented)
-dparsetree (undocumented)
-dtypedtree (undocumented)
-drawlambda (undocumented)
-dlambda (undocumented)
-dclambda (undocumented)
...
我发现-dsource提供了源代码的预打印。您想要的选项也应该在那里。是的,我首先尝试了,但它似乎没有给出与mli文件相同的树,或者我的匹配是不正确的,目标是最终都有,所以在ml文件中有一个类型的模块,在mli文件中有一个类型的模块。因此,我还需要尝试获取mli文件的树。正如我所说的,与模块内部声明的类型相比,这似乎有点不对劲。