Browse thread
A propos de ocamldep
- Yann Coscoy
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 1998-06-20 (00:30) |
From: | Yann Coscoy <Yann.Coscoy@s...> |
Subject: | A propos de ocamldep |
[English abstract : ocamldep do not use any real parser or typechecker, and consequently fails on very simple examples (some are given at the end of this message).] J'ai envie de râler après ocamldep. Il y de nombreux cas où ocamldep échoue lamentablement (voir à fin du message). Cet utilitaire donne l'impression d'avoir été écrit par quelqu'un qui ne disposait n'y d'un parser ni d'un typechecker ocaml. Ce n'est bien entendu pas le cas, mais cela en a tous les défauts. Aura-t-on un jour un ocamldep aussi fiable qu'un typechecker ? Ce que je réclame, c'est un générateur de dépendances qui fasse un parsing complet et un peu de typechecking. Le compilo ocaml contient, à mon avis, toutes les briques nécessaires pour le faire à peu de frais. Je suis parfaitement conscient qu'il peu être commode d'avoir un génerateur de dépendances qui se débrouille à peu près avec des fichiers incorrects. Mais, cela devrait à mon avis pas l'empêcher de fonctionner correctement avec des fichiers corrects. Cordialement, Yann Coscoy ============================================================ Premier cas, une dépendance qui manque : ======= fichier a.ml () ======= ======= fichier b.ml module M = A ======= ======= output ocamldep : ======= ======= dépendances correctes : b.cmo: a.cmo b.cmx: a.cmx ======= ============================================================ Deuxième cas une dépendance en trop : ======= fichier a.ml module B = struct let i = 1 end let j = B.i ======= ======= fichier b.ml () ======= ======= output ocamldep : a.cmo: b.cmo a.cmx: b.cmx ======= ======= dépendances correctes : ======= ============================================================ Il est bien sûr possible de raffiner le deuxième cas pour obtenir des dépendances bouclées très peu appréciées par make. ======= fichier a.ml module B = struct let i = 1 end let j = B.i ======= ======= fichier b.ml let k = A.j ======= ======= output ocamldep : a.cmo: b.cmo a.cmx: b.cmx b.cmo: a.cmo b.cmx: a.cmx ======= ======= dépendances correctes : b.cmo: a.cmo b.cmx: a.cmx =======