IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Parser le code C++


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut Parser le code C++
    Bonjour,
    Je suis entrain d'essayer d'ecrire un code C++ afin de parser des fichiers C++ afin d'en extraire les fonctions et leurs signatures (afin d'y apporter des modifications plus tard) c'est une sorte de moulinette!!
    quelqu'un aurait il une idée si de tels parsers existent déjà?
    ça me serait d'un trés grand aide.
    N.B : je compte utliser Eclipse CDT + cygwin
    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    Salut

    tu veux faire un parseur , analyseur syntaxique?

    si c'est ca , j'ai trouvé une page (en anglais)


    Clik-clik pour voir


  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Le code de Doxygen devrait t'aider

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Citation Envoyé par Alp
    Le code de Doxygen devrait t'aider
    Merci ALP je vais aller voir de ce coté

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Citation Envoyé par SimpleMe
    Salut

    tu veux faire un parseur , analyseur syntaxique?

    si c'est ca , j'ai trouvé une page (en anglais)


    Clik-clik pour voir

    Ben en fait je voudrais avoir en entrée un fichier .cpp et .h et à avoir en sortie la liste des fonctions avec leurs signatures (nom des paramètres)
    Je ne sais pas si je suis un peu plus clair?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Avec Doxygen il me génère un tas de fichiers xml et je suis un peu perdu ... il n'y a pas moyen d'avoir un algorithme plus facile?

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Je te conseillais d'aller voir comment ça marche(que ce soit écrit en C++ ou non, je ne sais pas), afin de pouvoir toi même retranscrire cela pour ton propre programme...

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Les programmes ctags ou etags extraient ce genre d'information je crois.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as une grammaire pas à jour pour yacc ici :
    http://jlecomte.ifrance.com/c++/c++-...ncies-fr.html#[33.10]

    Ca peut peut-être suffire pour l'utilisation que tu veux en faire.

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Le parser de Doxygen n'est pas un vrai parser C++.

  11. #11
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    sinon, tu peut toujours voir au niveau de Bouml qui est open source et fait du parsing
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Tu peux peut etre regarder ce qui se passe cote :

    -OpenC++

    -Puma

    -a moins d etre strictement contraint d ecrire ton code en C++, il existe des libs Ruby qui le font (j ai pas le nom sous les yeux, mais je te le retrouve sur demande) : voir "CodeGeneration in Action"

  13. #13
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    J'ai récemment essayer d'utiliser ces 2 libs (PUMA fait maintenant partie de AspectC++). L'une des 2 ne conpilait pas, et l'autre était assez vieille/limitée je crois. Du coup, la meilleure solution me semble etre le parseur de GCC. Il n'a pas l'air plus compliqué a utiliser. Mais je n'ai pas eu le temps de vérifier cet a apriori...

  14. #14
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Citation Envoyé par Aurelien.Regat-Barrel
    J'ai récemment essayer d'utiliser ces 2 libs (PUMA fait maintenant partie de AspectC++). L'une des 2 ne conpilait pas, et l'autre était assez vieille/limitée je crois.
    J'avais regardé tout ça l'année dernière, le but étant d'écrire un outil (CppNcss) nécessitant un minimum d'analyse de code C++...
    Ca m'avait laissé la même impression : plein de trucs pas finis à tendance bien bancals et finalement pas vraiment utilisables.
    Je rajoute quand même Synopsis à la liste même si le projet ne bouge pas tellement il a au moins le mérite d'être encore en vie.

    J'avais eu la flemme de me plonger dans gcc...

    La solution que j'avais choisie au final avait été d'écrire l'outil en Java en utilisant javaCC qui m'avait semblé présenter la grammaire C++ la plus fournie (par comparaison avec ANTLR notamment).
    Au final j'avais dû refaire un gros morceau de la grammaire et elle est loin d'être complète.

    Cela dit l'aspect le plus délicat ne concerne pas vraiment le 'parsing' lui-même mais plus la reconstruction de types et autres joyeusetés dans le style...

    MAT.

Discussions similaires

  1. Parser de Code Java
    Par Hug0_76 dans le forum Langage
    Réponses: 10
    Dernier message: 27/12/2009, 13h00
  2. Réponses: 1
    Dernier message: 21/11/2008, 14h02
  3. parser un code en c++
    Par vieri31 dans le forum C++
    Réponses: 1
    Dernier message: 11/04/2008, 14h11
  4. comment parser du code HTML
    Par niouze dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 12/01/2007, 10h28
  5. Module ou script existant pour parser du code C++
    Par Caine dans le forum Modules
    Réponses: 4
    Dernier message: 16/02/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo