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 :

lib parsing c++ personnalisable


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 33
    Par d�faut lib parsing c++ personnalisable
    bonjour,
    j'ai cherch� un peu et pas trouv� ce que je cherche. (pas s�r d'etre sur le bon fofo d'ailleur, h�sitez pas a bouger le sujet dans une autre section)

    je cherche une lib pour parser un fichier c++, et r�cup ce qui se trouve a proximit� de certains mots cl�s (d�finis par moi-m�me).
    exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    override char* teststr = "hello test string";
     
    override int test(int* a)
    {
        *a = (*a) + 2;
        return *a;
    }
    je parse le fichier, et je r�cup�re la ligne ou le "override" (nouveau keyword) se trouve, le nom, type, arguments, ect ... de la fonction qui suit.

    id�alement une lib �crite en c++, mais .net marcherais aussi.
    Je pr�cise que ce n'est pas un compiler-compiler que je cherche, juste une lib pour faire ca rapidement, sans se casser la t�te.

    l'id�e c'est d'avoir une lib conforme aux spec (c++ 11 si possible, dans le pire des cas juste C), que je puisse ensuite parser des fichiers de 2000 lignes sans bug, pour ensuit modif �ventuellement et compiler derri�re.

    certains vont me dire "s'facile moi j'ai fait un analyseur syntaxique full conforme aux spec du c++ 11 en 5h "... baaaah... respect, moi je peux pas ^^

    Si quelqu'un a une id�e, des conseils partagez les

    merci

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Bonjour

    Tu peux regarder du cot� de clang : API, parser.

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 33
    Par d�faut
    plop,

    merci pour ta r�ponse, d�sol� de r�pondre moi meme si tard, je bossais sur autre chose.
    ouais, en fait j'avais d�j� survol� clang et j'esp�rais ne pas avoir � l'utiliser car � ce que j'ai vu ca m'a quand meme l'air assez complexe, ya pas de binaries pour windows, donc faudrait que je le recompile avec la bonne version du VC++ runtime, ect...
    bref, j'ai essay� de le compiler 30min en suivant les conseils du site (http://clang.llvm.org/get_started.html), et vu que j'ai pas r�ussit (erreurs de script python) j'ai lach� l'affaire.

    Je suis tomb� sur VCCodeModel dans l'extensibility visual studio, et je me suis dit que ca pouvait peut etre faire ce que je voulais (� la base mon projet est un plugin visual studio).
    Et ca aurait �vit� de se retrouver avec des prob de compatibilit� que j'aurais eu avec Clang (genre "predefined macro" de visual studio pas d�clar�es, ect...).
    Mais de toutes facons, si j'utilise un nouveau keyword, visual studio le reconnaitras pas, donc le parsing du fichier sera innutilisable.
    et si je d�clare un define (ex: #define override ) le parser ignorera juste le mot cl�, et je ne pourrais pas le r�cup�rer.

    J'ai mit un message sur les fofo de microsoft et j'ai pas eu de r�ponse concluante, en fait je parie que l'extensibility de VS est tellement complexe que meme eux comprennent pas bien comment ca marche

    bref, du coup j'ai pas vraiment de piste... je peux r�-essayer de compiler clang mais je vais me retrouver avec des prob de compatiblit� et je sais pas si j'arriverais � quoi que ce soit...

    qu'est ce qu'il faut pas faire pour rajouter juste un mot cl�

    si quelqu'un a une id�e, piste, conseil ou quoi que ce soit, ou veut des clarifications concernant le probl�me h�sitez pas.

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    pourquoi vouloir parser les fichiers en C++ � tout prix ?
    En Python, c'est l'affaire de 5mn de faire un script qui r�cup�re les lignes qui contiennent override (ou tout autre regexp d'ailleurs)
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  5. #5
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 33
    Par d�faut
    yop,
    pas de Python, �a oblige a l'installer, mais .net oui (cf 1er message), c'est pas tr�s important

    En Python, c'est l'affaire de 5mn de faire un script qui r�cup�re les lignes qui contiennent override (ou tout autre regexp d'ailleurs)
    oui mais non.

    faut parser TOUT le fichier, a cause des multiline comment, des quotes (string),
    des defines, include, continuation de ligne, ect..
    il se passe quoi si tu fais �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    // fichier1.h
     
    #define override_func(type, name) \
        __declspec( naked ) override type name () \
        { \
            __asm pusha;
     
    #define end_override_func(retvalue) \
        __asm { \
            popa \
            mov eax, retvalue \
            ret \
        } }
     
    // fichier1.cpp
     
    #include "fichier1.h"
     
    override_func(int, functest1)
        printf("hello");
    end_override_func(0)
    Je ne sais m�me pas si �a compile, ni m�me si les conventions d'appel sont correctes, j'ai �cris �a vite fait... mais l'id�e est l�, mon appli ne DOIT pas planter.

  6. #6
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Y'a une diff�rence entre ton "probl�me" initiale qui est
    je parse le fichier, et je r�cup�re la ligne ou le "override" (nouveau keyword) se trouve, le nom, type, arguments, ect ... de la fonction qui suit.
    O� un langage de script sera bien plus simple � mettre en place.

    Et v�rifier qu'un fichier est compilable, auquel cas... il suffit d'essayer de le compiler.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  7. #7
    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
    Si tu veux analyser du code C++ correct, je te conseille vraiment de creuser un peu plus la solution Clang. La compilation avec VC++ n'est pas difficile (je crois m�me qu'on trouve des pr�-compil�s sur le net), il comprend d�sormais assez bien les particularit�s de ce compilateur, rechercher un pattern de code assez simple s'�crit litt�ralement en 5 lignes, et il poss�de un framework de r��criture de code.

    J'ai mis moins d'une journ�e � faire une t�che similaire � celle l� (pas de r��criture en sortie), d�couverte de clang comprise.

    Si tu veux d�velopper une sorte d'extension du langage (ton exemple avec override sur une fonction libre me fait supposer �a), ce sera un peu moins simple, tu ne pourras pas simplement utiliser Clang, il te faudra le modifier. Mais l'utilisation de Clang me semble quand m�me une bonne option � consid�rer.

    Maintenant, si tu veux faire des modifs tr�s simples, qui n'ont pas besoin de comprendre la structure du code, et que ce qui t'emb�te, c'est juste le pr�processeur, tu peux peut-�tre effectuer tes modifs sur le fichier pr�process� ?
    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.

  8. #8
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 33
    Par d�faut
    Maintenant, si tu veux faire des modifs tr�s simples, qui n'ont pas besoin de comprendre la structure du code, et que ce qui t'emb�te, c'est juste le pr�processeur, tu peux peut-�tre effectuer tes modifs sur le fichier pr�process� ?
    ah ouais.... chouette id�e. ca me plait
    je crois que je vais faire ca. je chope les fichier pr�process�s, je trouve les override, je stocke les infos qu'il me faut, et je les enl�ve puis je compile les fichiers.

    ca enl�ve un bon probl�me d�ja... mais apr�s on en revient au meme point..

    en fait le truc c'est que si j'autorise du c++, faut que je parse tout, les namespaces, classes, typedef � cause du name mangling car je veux le nom du symbole dans le fichier .obj qui va r�sulter. (voir http://en.wikipedia.org/wiki/Visual_..._name_mangling)

    et pfff... en fait je crois que ya pas d'interet pour ce que je veux faire.

    Donc je pense que je vais juste faire un petit parser a la main rapidos, juste pour r�cup�rer les override. Vu que ya pas de name mangling en C, j'obligerais l'utilisateur a mettre un "extern "C"" sur sa fonction mais c'est g�rable je pense

  9. #9
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    762
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 762
    Par d�faut
    Salut,

    Juste par curiosit�, peux-tu nous dire pourquoi tu veux ajouter ce genre de mot cl� ?

Discussions similaires

  1. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    R�ponses: 5
    Dernier message: 21/11/2003, 18h13
  2. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    R�ponses: 10
    Dernier message: 09/10/2003, 12h53
  3. Chargement d'une lib partag�e C++ dans un programme C
    Par Zero dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 30/09/2003, 16h40
  4. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et ant�rieur
    R�ponses: 3
    Dernier message: 27/05/2003, 17h56
  5. inclure une librairie *.lib
    Par darkbm dans le forum C
    R�ponses: 2
    Dernier message: 16/12/2002, 22h48

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