Есть ли инструмент OCaml, который позволяет фильтровать комментарии в исходных файлах, похожие на gcc -E
?Lexer/filter для комментариев
В идеале, я ищу что-то, что удалит все , но комментариев, но наоборот.
Например, если есть возможность использовать camlp4/campl5/ppx для получения комментариев OCaml (включая комментарии, отличные от OCamldoc, определенные одной звездочкой), я хотел бы знать. У меня не было большого успеха в поиске узлов комментариев в ASTM Camlp4 (хотя я знаю, что он должен существовать, потому что есть даже ошибки, связанные с тем, что Camlp4 изменяет их размещение).
Вот пример: в следующем файле:
(*** three asterisks *)
let f() =
Format.printf "end"
let() =
(* one asterisk (* nested comment *) *)
Printf.printf "hello world\n";
(** two asterisks *)
f();
()
Я хотел бы идеально получить:
(*** three asterisks *)
(* one asterisk (* nested comment *) *)
(** two asterisks *)
пробельные между ними и наличие или отсутствие (* *)
в основном не имеет значения, но он должен сохранять комментарии всех видов. Моя ближайшая цель - отфильтровать его на проверку орфографии, но также могут быть полезны очистка комментариев (т. Е. Наличие фильтра, который разделяет только комментарии): я мог бы очистить комментарии, а затем использовать diff
, чтобы получить то, что было удалено.
К сожалению, похоже, что ocamldoc не учитывает одиночные комментарии. Если я буду использовать 'sed', чтобы преобразовать его, он слишком усердствует, чтобы проанализировать их, что приведет к нескольким видам ошибок. Кроме того, тот факт, что для него требуется какая-то настройка компиляции (например, '-I' пути, позволяющие находить файлы' .cmi', например), делает его довольно тяжелым для того, что я намеревался. – anol