2008-09-17 8 views
2

Quelqu'un peut-il me suggérer un langage de programmation utile qui peut être utilisé pour créer un outil qui analysera le programme C donné et générer un rapport txt ou html contenant des informations sur le programme donné (liste des fonctions, liste des variables, etc.). Le programme que j'ai l'intention de construire est similaire à doxygen mais je le veux pour mon usage personnel.Quelle langue est utile pour créer un rapport pour un programme C valide

Répondre

3

Python et Perl ont d'excellentes capacités de traitement de chaînes.

Je suggérerais d'utiliser quelque chose comme ctags pour analyser le programme, et de simplement créer un script pour lire le fichier ctags et le sortir dans txt/html.

Le format de fichier utilisé par ctags est bien défini pour que d'autres programmes puissent le lire. Voir http://ctags.sourceforge.net pour plus d'informations sur ctags lui-même et le fichier qu'il utilise.

1

Regardez dans les langages de script. Je recommanderais Python ou Perl.

4

ctags, peut-être? Ctags génère un fichier index (ou tag) d'objets langage trouvés dans les fichiers source qui permet à ces éléments d'être rapidement et facilement localisés par un éditeur de texte ou un autre utilitaire. Une balise désigne un objet langage pour lequel une entrée d'index est disponible (ou, en variante, l'entrée d'index créée pour cet objet).

0

Si c'est un langage de programmation que vous voulez alors je dirais quelque chose qui est connu pour la puissance de traitement de chaîne de sorte que cela signifierait Perl. Cependant, la tâche dont vous avez besoin peut être plutôt compliquée car vous devez "connaître" la langue, vous devrez donc suivre les mêmes étapes que le compilateur, étant des analyses lexicales et grammaticales sur le langage (pensez flex, pensez yacc) afin de vraiment «savoir» quel sens ont ces chaînes.

Peut-être le meilleur point de départ est de jeter un oeil à doxygen et essayer de réutilise autant de travail là-bas que possible

1

Haskell a un projet langue c relativement récente http://www.sivity.net/projects/language.c qui permet l'analyse de code C . Si vous êtes familier avec Haskell, alors cela peut valoir le coup d'oeil. Même si vous n'êtes pas, il pourrait être intéressant d'essayer.

2

Vous ouvrez un grand sac de noeuds, ce n'est pas une utilisation efficace de votre temps, bla bla bla, etc.

Passant à une réponse, si vous parlez quoi que ce soit au-delà de trivial analyse et vous avez besoin de précision, vous devrez analyser le code source C. Vous pouvez le faire dans n'importe quelle langue, mais vous voudrez certainement générer votre analyseur à partir d'une grammaire de haut niveau. Il y a un certain nombre d'outils pour cela. Un générateur de parser moderne et particulièrement puissant est ANTLR; il existe un certain nombre de grammaires ANTLR pour C, y compris des sous-ensembles plus faciles à travailler.

0

Lex/yacc sont appropriés pour construire des parseurs.

0

pycparser est un analyseur complet pour ANSI C89/C90 écrit en pur Python. Il est largement utilisé pour analyser le code source C pour divers besoins. Il est livré avec un exemple de code, comme la liste de toutes les définitions de fonctions dans les fichiers, etc.

Questions connexes