Я потратил несколько минут на поиск источников компилятора OCaml, и вот что я нашел.
Флаг командной строки -dsource устанавливает для поля dump_source
значение true в модуле Clflags.
Этот параметр в свою очередь заставляет компилятор делать что-то подобное в driver/compile.ml
при компиляции файла реализации (.ml).
if !Clflags.dump_source then
fprintf ppf "%a@." Pprintast.structure ast
Другими словами, он красиво печатает часть кодаAST в форме, которая выглядит как исходный код.
Вещи похожи на файл интерфейса (.mli), за исключением того, что он печатает подпись, а не код.
Поскольку OCamlимеет довольно гибкий интерфейс, я думаю, это полезно, чтобы увидеть конечный результат любых синтаксических преобразований, которые были применены к коду.(Но я могу ошибаться, я не хакер компилятора OCaml.)
Я предлагаю вам начать смотреть на код в driver/compile.ml
, если вы хотите узнать больше.