什么';ocamlc选项数据源的影响?

什么';ocamlc选项数据源的影响?,ocaml,Ocaml,我不知道ocamlc的选项dsource的效果,-h选项告诉我它没有文档记录 我知道dparsetree和dtypedtree的用法,它可以显示ast 我尝试使用选项dsource,对一个文件test.ml,它似乎返回给我源代码,没有空行和注释,并在底部告诉我源代码的警告 这是选项dsource的效果吗?谢谢 我刚刚花了几分钟的时间浏览了OCaml编译器的源代码,下面是我的发现 -dsource命令行标志将Clflags模块中的dump\u source字段设置为true 此设置反过来会导致编译

我不知道ocamlc的选项dsource的效果,-h选项告诉我它没有文档记录

我知道dparsetree和dtypedtree的用法,它可以显示ast

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


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

我刚刚花了几分钟的时间浏览了OCaml编译器的源代码,下面是我的发现

-dsource命令行标志将Clflags模块中的
dump\u source
字段设置为true

此设置反过来会导致编译器在编译实现(.ml)文件时在
driver/compile.ml
中执行类似操作

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

接口(.mli)文件的情况类似,只是它打印出的是签名而不是代码

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


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

我刚刚花了几分钟浏览了OCaml编译器源代码,下面是我的发现

-dsource命令行标志将Clflags模块中的
dump\u source
字段设置为true

此设置反过来会导致编译器在编译实现(.ml)文件时在
driver/compile.ml
中执行类似操作

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

接口(.mli)文件的情况类似,只是它打印出的是签名而不是代码

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


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

-dsource
在删除语法扩展(如camlp4和ppx)后,使用OCaml语法漂亮地打印AST


它主要用于调试PPX。内容与
-dparsetree
完全相同(除了源代码形式,而不是AST)。

-dsource
在删除语法扩展(如camlp4和ppx)后,使用OCaml语法漂亮地打印AST

它主要用于调试PPX。内容与
-dparsetree
完全相同(除了源代码形式,而不是AST)

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