我不知道ocamlc的dsource选项的作用。-h选项告诉我它没有记载
我知道dparsetree和dtypedtree的用法,它可以告诉我ast
我尝试使用选项dsource到文件test.ml,似乎返回了源代码,没有空行和注释,并在底部告诉了我源代码的警告。
是dsource选项的效果吗?谢谢!
答案 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)。