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 :

[C/C++] Parser un code source


Sujet :

C++

  1. #21
    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 : 51
    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
    Visual C++ g�re aussi les regex depuis plusieurs ann�es. Globalement, ce compilateur � tendance � �tre assez lent pour le support du langage, mais rapide pour le support des biblioth�ques.
    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.

  2. #22
    Membre tr�s actif
    Profil pro
    professeur des universit�s � la retraite
    Inscrit en
    Ao�t 2008
    Messages
    364
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : professeur des universit�s � la retraite

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 364
    Par d�faut
    Oui, enfin � l'heure actuelle les regex, ce n'est plus une affaire de biblioth�que mais une partie int�grante du langage. M�me si certains compilateurs tardent encore un peu � int�grer cet aspect de la nouvelle norme C++11, c'est en cours, et cela ne devrait plus gu�re tarder, sachant que pour l'instant Clang dame le pion aux autres compilateurs pour cet aspect des choses.

  3. #23
    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 : 51
    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
    Citation Envoy� par ptyxs Voir le message
    Oui, enfin � l'heure actuelle les regex, ce n'est plus une affaire de biblioth�que mais une partie int�grante du langage. M�me si certains compilateurs tardent encore un peu � int�grer cet aspect de la nouvelle norme C++11, c'est en cours, et cela ne devrait plus gu�re tarder, sachant que pour l'instant Clang dame le pion aux autres compilateurs pour cet aspect des choses.
    Je parlais de la gestion des regex en tant qu'�l�ments de la biblioth�que standard. Je ne sais pas trop ce que tu appelles partie int�grante du langage, mais les regex restent et resteront une affaire de la biblitoh�que standard. Elle ne demandent aucune modification au "core language" lui-m�me.

    Les regex ont �t� introduites dans TR1 (publi� en 2007 officiellement, bien que n'�tant pas un standard en tant que tel). Visual C++ les as support�es � partir de visual C++2008 SP1. Elles ont ensuite �t� confirm�es en C++11 (et bascul�es de std::tr1:: vers std:: ), et visual C++ les a imm�diatement support�es.

    Et donc Clang ne dame le pion � personne pour cet aspect (je ne dis pas qu'il n'est pas bon, loin de l�, c'est juste que je n'aime pas entendre encens� un compilateur sur les aspects o� il n'a rien de remarquable, et que ce soient Clang ou gcc, aucun des deux n'est particuli�rement remarquable sur les aspects support de la biblioth�que standard, ce qui est d'autant plus surprenant que ce sont g�n�ralement des aspects simples � int�grer... ).
    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.

  4. #24
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Citation Envoy� par white_tentacle Voir le message
    Vous �tes s�rs que c�est une bonne id�e de partir sur les regex ?
    Je pense pareil: les regex sont notablement connu pour etre une tres mauvaise idee pour parser tout ce qui est language ou turing complete...

  5. #25
    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 : 51
    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
    Citation Envoy� par Klaim Voir le message
    Je pense pareil: les regex sont notablement connu pour etre une tres mauvaise idee pour parser tout ce qui est language ou turing complete...
    Si le but �tait effectivement d'analyser du code C ou C++ quelconque, les regex ne suffiraient effectivement pas (et faire un parseur pour du C++ reste une t�che non triviale).

    Mais l�, il semblerait que le but soit de reconnaitre des motifs dans du code sp�cifique �crit d'une mani�re bien pr�cise. Dans ce cadre, les regex me semblent appropri�es.
    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.

  6. #26
    Membre Expert

    Avatar de germinolegrand
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Octobre 2010
    Messages
    738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Par d�faut
    Un conseil, pour les regex, � moins d'�tre maso, il est plus que tr�s recommand� d'utiliser les raw string (http://cpp.developpez.com/redaction/...s/cpp11/#LIV-C).

  7. #27
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Hello guys

    Si vous voulez analyser du code source C++, le mieux est quand m�me d'utiliser l'api C++ de LLVM/Clang. Vous aurez un v�ritable AST C++ analysable sur tous les aspects voulus.

    C'est un peu overkill au vu du sujet de base car il y a un co�t d'apprentissage, mais la solution une fois mise en place est � mon avis tr�s simple.

  8. #28
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Citation Envoy� par JolyLoic Voir le message
    Si le but �tait effectivement d'analyser du code C ou C++ quelconque, les regex ne suffiraient effectivement pas (et faire un parseur pour du C++ reste une t�che non triviale).

    Mais l�, il semblerait que le but soit de reconnaitre des motifs dans du code sp�cifique �crit d'une mani�re bien pr�cise. Dans ce cadre, les regex me semblent appropri�es.
    Par experience, je suis mefiant du cas ou on veut chercher des motifs dans du code. Generalement il est impossible definir ces motifs correctement simplement parceque si il sagit de semantique du langage, il ne sagit plus de motifs. Ici on parle de noms de variables, ce qui m'apparait just suffisamment complexe pour que les regex soient un piege (qui ne se voit qu'apres avoir passe trop de temps ici).

    (une legere note humoristique plus ou moins a ce sujet, voir la reponse la: http://stackoverflow.com/questions/1...contained-tags )

  9. #29
    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 : 51
    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
    Disons que c'�tait juste la phrase "toujours � gauche de la fonction "load_bitmap"." qui me laisse penser qu'on est peut-�tre dans un cas assez cadr� pour que �a passe. Et la diff�rence de temps entre les deux impl�mentation m�rite peut-�tre de le tenter.

    Ce qui est clair, c'est que je ne ferais �a que pour du code "local", pas forc�ment du code livr� � un client ayant pour but d'�tre utilis� de longues ann�es...
    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.

  10. #30
    Membre r�gulier
    Homme Profil pro
    Inscrit en
    F�vrier 2012
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 11
    Par d�faut
    J'aurais plut�t conseiller Flex(++) et Bison(++) qui sont les outils les plus puissants que je connaisse dans le domaine de l'analyse lexicale (automate � �tat fini, regex) et syntaxique (analyse LR ou plut�t LALR) - sinon, il y a l'OCaml avec ocamllex et menhir, encore plus puissant mais bon le choix a d�j� �t� fait.

    Apr�s, tout ceci semble un peu bourrin pour la petite probl�matique que tu veux faire. � savoir si tu veux faire �a proprement (cf. les outils plus hauts) ou de fa�on tricky. Sinon, la documentation est tr�s bien faite sur ces deux outils qui sont largement r�pandus. et �a m'�tonnerait pas de voir d�j� sur internet les fichiers correspondant � un lexer/parser C et C++ (j'ai bien trouv� PHP).

  11. #31
    Nouveau candidat au Club
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2013
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par d�faut
    Citation Envoy� par jblecanard Voir le message
    Hello guys

    Si vous voulez analyser du code source C++, le mieux est quand m�me d'utiliser l'api C++ de LLVM/Clang. Vous aurez un v�ritable AST C++ analysable sur tous les aspects voulus.

    C'est un peu overkill au vu du sujet de base car il y a un co�t d'apprentissage, mais la solution une fois mise en place est � mon avis tr�s simple.
    Je pense aussi que c'est 100x plus simple. M�me s'il y a un co�t �a sera toujours moindre que d'essayer de faire des regex ou d'apprendre la syntaxe moisie de Bison/Flex.

    Et les fonctions de parsing/ast/compilation de clang sont disponibles avec des bindings python en plus de l'API C et C++.

Discussions similaires

  1. [C#] Parser code source C avec regex
    Par Aspic dans le forum C#
    R�ponses: 10
    Dernier message: 25/12/2013, 11h50
  2. parser code source jave pour obtenir un AST
    Par cdm1024 dans le forum G�n�ral Java
    R�ponses: 1
    Dernier message: 10/08/2009, 09h19
  3. Contribuez � la FAQ et aux CODES SOURCE XML
    Par Community Management dans le forum XML/XSL et SOAP
    R�ponses: 12
    Dernier message: 21/04/2008, 20h52
  4. Je cherche le code-source d'un interface de Windows
    Par Robert A. dans le forum Windows
    R�ponses: 5
    Dernier message: 02/06/2003, 09h45
  5. [VB6] Code source pour modifier MsgBox
    Par khany dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 25/02/2003, 15h13

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