bien peu d'aide était disponible en Lex/Yacc ou leurs équivalents libres: Flex/Bison
ce sont respectivement des analyseurs lexicaux et grammaticaux
voici une pierre à l'édifice:
L'objectif de ce projet est de développer une application permettant d'analyser un fichier de code source en C, il sera par la suite possible de le faire évoluer pour le langage C++
Le but est de détecter et définir l'utilisation de variables au sein des fonctions faisant partie de ce fichier. Nous repérerons donc ces variables pour en retenir le nom et le type d'utilisation qu'il en est effectivement fait. Nous déduirons si ces variables sont des variables d'entrée (IN) ou de sortie (OUT) et si elle sont utilisées puis modifiées (INOUT).
Pour cela nous ferons un analyseur lexical et syntaxique, respectivement avec LEX et YACC, pour reconnaître la grammaire de code source en C / C++ .
(Rq: le code compile et fonctionne sous Unix et sous Dos!)
Le zip contient une base qui analyse du code source C et, pour des raison de simplifications, est relativement contraignante quant aux codes reconnus.
(spécification lex):
o Variable : [a-z][a-zA-Z_0-9]*
o Constante : [A-Z] [A-Z_0-9]*
o Macro : _[A-Z_0-9]*
o Fonctions : [a-zA-Z_][a-zA-Z_0-9]*
o Types : [A-Z] [a-zA-Z_0-9]* [a-z0-9]+[a-zA-Z_0-9]*
explication:
[...]: une lettre parmi...
a-z : toute lettre entre a et z (bornes comprises)
* : un nombre quelconque de fois ce qui précède...
+ : au moins une fois ce qui précède
pour les Types cela signifie MajusculeAuDebutEtAuMoinsUneMinusculeOuUnChiffre.