ocamlc的选项dsource有什么作用?

时间:2018-11-14 03:31:17

标签: ocaml

我不知道ocamlc的dsource选项的作用。-h选项告诉我它没有记载

我知道dparsetree和dtypedtree的用法,它可以告诉我ast

我尝试使用选项dsource到文件test.ml,似乎返回了源代码,没有空行和注释,并在底部告诉了我源代码的警告。

是dsource选项的效果吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我只是花了几分钟来弄清OCaml编译器的源代码,这就是我所发现的。

-dsource命令行标志在Clflags模块中将dump_source字段设置为true。

此设置继而使编译器在编译实现(.ml)文件时在driver/compile.ml中执行类似的操作。

if !Clflags.dump_source then
    fprintf ppf "%a@." Pprintast.structure ast

换句话说,它以类似于源代码的形式漂亮地打印AST的代码部分。

接口(.mli)文件看起来很相似,只是它打印出签名而不是代码。

由于OCaml的前端相当灵活,因此我认为这有助于查看已应用于代码的任何语法转换的最终结果。 (但是我可能是错的,我不是OCaml编译器黑客。)

如果您想了解更多信息,建议您开始查看driver/compile.ml中的代码。

答案 1 :(得分:2)

-dsource在取消对camlp4和ppx等语法扩展的使用后,使用OCaml语法对AST进行了漂亮打印。

它主要用于调试ppxs。内容与-dparsetree完全相同(源格式除外,而不是AST)。