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 :

Parseur C++ dans du C++


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par d�faut Parseur C++ dans du C++
    Bonjour,

    Je voulais savoir s'il existait un parseur C++ qui permet de prendre du code C++ sous forme de carat�re et le transformer en fonction C++ dynamiquement

    en gros j'ai un programme P
    avec en entrer une fonction (�crite en C++)
    en sortie un calcule fait � partir de cette fonction.

    je veux donc faire P(f(g)) sachant que je ne connais pas g au moment de la compilation.
    Pr�cisions g est une fonction math�matique mais utilisant des objets non standard (autre que des entier, r�els et caract�res).
    Sachant que les objets manipul� par g sont d�fini dans P.

    J'esp�re �tre suffisament claire

    PS : il me semble qu'une fonction semblable existe en javascript ou php

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Il n'y a rien en standard pour �a en C++. De plus, le langage C++ est assez peu adapt� au parsing � l'ex�cution, vu qu'il s'agit d'un langage enti�rement compil�. Il est plut�t conseill� d'utiliser un langage interpr�t� ou semi-interpr�t� pour ce que tu cherches � faire. La plupart des langages de scripts r�pondent � ce crit�re, c'est pourquoi tu peux trouver des interpr�teurs de script pour C++.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par d�faut
    Hello,

    On pourrait faire ce genre de chose en :
    • �crivant un fichier cpp avec la fonction en question,
    • compilant le fichier en une dll,
    • et finalement en chargeant la dll dynamiquement.

    (� condition d'avoir un compilateur sous la main)

  4. #4
    Membre chevronn�
    Inscrit en
    Ao�t 2004
    Messages
    556
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2004
    Messages : 556
    Par d�faut
    boost::spirit te permet de cr�er des parseurs.

    Mais il faut quand m�me que tu cr�es un parseur qui impl�mente la grammaire et la s�mantique, et c'est pas chose facile pour un langage comme le C++.

  5. #5
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    Si tu comptes utiliser un langage de script, je te conseille Lua pour sa syntaxe tr�s proche du C/C++.

  6. #6
    Membre exp�riment� Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par d�faut
    +1 pour lua, avec luabind, c'est que du bonheur.

    Sinon si il faut vraiment que ce soit du c++, je ne vois que la m�thode de remy72, en compilant une dll et en liant dynamiquement.

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par d�faut
    Oui, tout doit �tre en C++,
    et compiler dynamiquement une biblioth�que n'est pas un peu long ?

  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ben oui, c'est long et �a n�cessite qu'un compilo soit install�. Mais si tu veux vraiment du C++, tu n'as pas le choix.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par d�faut
    Je vais cr�er un parseur d'expression arithm�tique qui utilise mes objets pour les variables et constantes.

  10. #10
    Membre tr�s actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par d�faut
    J'avais lu un article la dessus il y a un moment. C'etait sur la library blitz je crois.

  11. #11
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par d�faut
    Une petite lib avec lex et yacc suffirons amplement

  12. #12
    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
    Mais Boost.Spirit est fait pour �a.
    Tu aurais ainsi ton parseur et tu peux ensuite constituer ton AST et "l'interpr�ter".

  13. #13
    Membre exp�riment� Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par d�faut
    Tu peux peut etre utiliser boost.python. Le langage utiliser sera donc du python (mais c'est peut etre pas ce que tu veux), et il est ensuite facile de creer un object c++, de le manipuler via python et de le recuperer ensuite

  14. #14
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par d�faut
    <Troll> : Le python c'est nul.
    <\Troll>

    Sinon est-il possible d'utiliser Lex/Yacc en prenant non pas en entr�e l'entr�e standard (ou un fichier mais c'est pareil) mais une chaine de caract�re (char *) ?

Discussions similaires

  1. [DOM] caract�re > dans parseur DOM
    Par solika dans le forum Format d'�change (XML, JSON...)
    R�ponses: 2
    Dernier message: 16/05/2013, 13h45
  2. instancier le parseur xml dans ma servlet
    Par hlaura dans le forum Format d'�change (XML, JSON...)
    R�ponses: 2
    Dernier message: 25/07/2006, 23h55
  3. g�rer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    R�ponses: 1
    Dernier message: 14/06/2002, 13h39
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    R�ponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    R�ponses: 1
    Dernier message: 26/04/2002, 09h59

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