是否有OCaml工具允許過濾源文件中的註釋,類似於gcc -E
?Lexer/filter for comments
理想情況下,我正在尋找的東西,將刪除所有但評論,但其他方式也將是有益的。
例如,如果有一種方法可以使用camlp4/campl5/ppx來獲取OCaml註釋(包括用單個星號定義的非OCamldoc註釋),我想知道。我在Camlp4的AST中尋找評論節點方面沒有太多成功(儘管我知道它必須存在,因爲甚至有與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