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 :

extraire une fonction?


Sujet :

C++

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut extraire une fonction?
    bonjour,

    voila, j'essaie d'extraire une fonction d'un fichier.
    ce que je veux dire , c'est que je dois extaire (automatiquement) de sources une fonction dont j'ai le nom et dont j'ai le fichier dans lequel elle se trouve (c'est du java) et il faut que je la mettre dans un string.


    en clair

    dans le fichier
    ....
    blabla
    ....

    public NOM(x1){
    // code java
    {dqsdqd
    }{dqdsq}{qds{dqdsqd}dqsd}
    }

    etc etc..


    et moi dans mon prgramme je dois arrivé a mettre dans std::string nom toute la fonction cad

    std::string ="
    public NOM(x1){
    // code java
    {dqsdqd
    }{dqdsq}{qds{dqdsqd}dqsd}
    }
    "

    je dois arrivé a un truc comme cela

    y a il des librairies qui font ca directement?? ou bien qqch qui me simplifierais la vie??

    merci


    a++

  2. #2
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Il y a beaucoup de code qui fait ce genre de choses, et même bien plus. Trop même souvent. Regarde n'importe quel compilateur, analyseur de code à la doxygen, outil de coloration syntaxique... en code libre.

    Mais en l'occurrence, ce n'est pas très dur à faire, soit semi-manuellement soit manuellement. Il s'agit d'abord de rechercher le nom de la fonction, puis de parcourir le texte manuellement. A chaque fois que tu trouves un {, tu incrémentes un compteur, un }, tu le décrémentes. Il arrive à 0 à la fin de la fonction. Après, faut tenir compte des { dans les commentaires et les littéraux, mais ça me semble tout de même assez simple.
    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.

  3. #3
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    Il faut aussi faire attention à ce qu'on ne soit pas dans une chaîne littérale.
    Boost ftw

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    ctags?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut
    hi,
    excusez moi pour ma reponse tardive,

    loufoque et JolyLoic >> c'est beaucoup plus compliquer que cela, par exemple si la fonction est appelé d'une autre fonction dans le meme fichier. il va d'abord s'arreté sur cette appelle. alors on pourrais dire qu'il faut que cela soit suivi d'une { oiu mais il il y en a qui ecrive comme cela.

    ....
    blabla(e);
    ....
    void
    blabla(E x)
    {


    }

    ou alors il faut faire caractere par caractere, mais alors on a plus la notion de tokens (et donc de literal.)



    sinon, effectivement etags me sort des trucs interressants, vais voir en profondeur.

    merci

    a++

  6. #6
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Effectivement, c'est plus complexe. Il y a aussi peut-être les cas où une même fonction est définie dans deux classes dans le même fichier, je ne sais pas si c'est possible en java.

    Une alternative à la recherche du nom de fonction suivi d'une accolade pourrait être de maintenir le contexte courant, et d'ignorer le nom de la fonction si on est à l'intérieur d'une autre fonction. Je ne connais pas assez Java pour savoir si ce serait simple ou non.

    Maintenant, [c/e]tags proposés par Luc sont probablement une meilleure solution.
    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.

Discussions similaires

  1. extraire une variable dans une fonction ODE
    Par Sarra_ dans le forum MATLAB
    Réponses: 13
    Dernier message: 11/11/2009, 21h09
  2. [MySQL] Extraire une données en fonction de l'id'
    Par flamel dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/03/2009, 17h52
  3. Extraire le code d'une fonction
    Par Le Mth dans le forum Général Python
    Réponses: 4
    Dernier message: 19/02/2009, 01h30
  4. Réponses: 5
    Dernier message: 04/07/2007, 18h31
  5. Réponses: 7
    Dernier message: 17/10/2006, 08h46

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