DΙtection de l'usage des variables d'un code en c / c++ - avec lex/yacc, flex/bison

Description

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.

Conclusion :


L'analyse est basée sur les analyseurs de Sandro Sigala selon la norme ISO C 9899:1990 international standard.
Les analyseurs syntaxique et lexical contenatent les règles de grammaire des langages C et C++ et les détections syntaxique propre aux langages.
Les traitements ont été ajouté et l'ensemble des codes reconnu a été augmenté: commentaires monlignes, adressage par crochet...

Et l'analyse reste loin d'être parfaite...

Magicalement
Magic-Nono

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.