Existe-t-il un outil OCaml permettant de filtrer les commentaires dans les fichiers source, similaire à gcc -E
?Lexer/filter for comments
Idéalement, je cherche quelque chose qui va supprimer tout mais commentaires, mais l'inverse serait également utile. Par exemple, s'il y a un moyen d'utiliser camlp4/campl5/ppx pour obtenir des commentaires OCaml (y compris des commentaires non-OCamldoc définis avec un seul astérisque), j'aimerais savoir. Je n'ai pas eu beaucoup de succès à la recherche de nœuds de commentaire dans AST de Camlp4 (bien que je sache qu'il doit exister, car il y a même des bugs liés au fait que Camlp4 modifie leur placement).
Voici un exemple: dans le fichier suivant:
(*** three asterisks *)
let f() =
Format.printf "end"
let() =
(* one asterisk (* nested comment *) *)
Printf.printf "hello world\n";
(** two asterisks *)
f();
()
Je voudrais obtenir idéalement:
(*** three asterisks *)
(* one asterisk (* nested comment *) *)
(** two asterisks *)
L'espace entre eux et la présence ou l'absence de (* *)
n'a plus d'importance, mais il devrait conserver les commentaires de toutes sortes. Mon objectif immédiat est de pouvoir le filtrer sur un vérificateur d'orthographe, mais nettoyer les commentaires (c'est-à-dire avoir un filtre qui supprime uniquement les commentaires) peut également être utile: je peux nettoyer les commentaires et utiliser diff
pour obtenir ce qui a été supprimé.
Malheureusement, il semble que ocamldoc ne tient pas compte des commentaires d'une seule étoile. Si j'utilise 'sed' pour transformer, alors il essaie trop de les analyser, ce qui conduit à plusieurs types d'erreurs. De plus, le fait qu'il nécessite une sorte de configuration de compilation (par exemple, des chemins '-I' pour lui permettre de trouver des fichiers' .cmi', par exemple) le rend assez lourd pour ce que j'ai prévu. – anol