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

Générateurs de compilateur Discussion :

parser: quelle outils/librairie ?


Sujet :

Générateurs de compilateur

  1. #1
    Membre à l'essai
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 15
    Points
    15
    Par défaut parser: quelle outils/librairie ?
    Bonjour,

    J'aimerais programmer un compilateur pour un language de programmation (un petit subset du C) dans un but pedagogique.

    Pour cela j'aurais besoin d'un parser qui me permetrais d'extraire un le contenu d'un fichier en un arbre ast. N'ayant pas grand experience en la matiere, quel outils/librairies (boost, lex/bison, antlr...) me conseillerez vous sachant que je recherche avant tout:
    - la rapidite de developement.
    - la simplicite de l'interfacer avec le reste du program.

    Merci d'avance.
    PS: desole pour l'absence d'accent mais c'est pas evident avec un clavier QWERTY...

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si c'est vraiment un compilateur, j'ai tendance à prendre lex et yacc (flex/bison) comme je l'ai appris. Malheureusement, je ne connais pas les autres technologies, donc je ne saurais dire ce qui est le mieux...
    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
    screetch
    Invité(e)
    Par défaut
    moi aussi je suis fan de bison et flex, mais il y a d'autres outils.
    j'avais utilisé antlr et l'avais trouvé mauvais mais ca a pu changer.
    boos a aussi sa bibliotheque.

  4. #4
    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
    ANTLR est la technologie la plus populaire de nos jours pour une méthode classique.
    Sinon il y a Boost.Spirit qui est également intéressant.
    Boost ftw

  5. #5
    Membre à l'essai
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos reponses.

    Apres quelque test:
    • Boost Spirit: Une librairie genial qui permet de creer son parser sans avoir a utiliser d'autre outils que c++. Ceci dit, apres experimentation, je pense que Boost::Spirit est plus adapter pour creer de petit parser (genre fichier de configuration, etc...) plutot que de parser un language entier. (la syntaxe devient tres lourde quand on commence a vouloir generer un arbre syntaxique abstrait (AST)
    • Flex/Bison: Il existe une version pour C++ qui est tres simple a utilise et a controler (du lexer a la generation d'un AST).

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par AurelienTran Voir le message
    • Boost Spirit: Une librairie genial qui permet de creer son parser sans avoir a utiliser d'autre outils que c++. Ceci dit, apres experimentation, je pense que Boost::Spirit est plus adapter pour creer de petit parser (genre fichier de configuration, etc...) plutot que de parser un language entier. (la syntaxe devient tres lourde quand on commence a vouloir generer un arbre syntaxique abstrait (AST)
    Salut,
    Une nouvelle version de Boost va sortir dans quelques jours et devrait contenir une nouvelle version de Boost.Spirit. Peut être cela vaut le coût d'attendre un peu et de voir ce qu'elle vaut.

  7. #7
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Citation Envoyé par AurelienTran Voir le message
    Merci pour vos reponses.

    Apres quelque test:
    • Boost Spirit: Une librairie genial qui permet de creer son parser sans avoir a utiliser d'autre outils que c++. Ceci dit, apres experimentation, je pense que Boost::Spirit est plus adapter pour creer de petit parser (genre fichier de configuration, etc...) plutot que de parser un language entier. (la syntaxe devient tres lourde quand on commence a vouloir generer un arbre syntaxique abstrait (AST)
    • Flex/Bison: Il existe une version pour C++ qui est tres simple a utilise et a controler (du lexer a la generation d'un AST).
    Tu peux regarder SCALPEL de Florian Goo (sur le forum) il parse du C++ avec boost.spirit, c'est vraiment bien foutu .


    http://42ndart.org/scalpel/
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  8. #8
    Membre à l'essai
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Goten Voir le message
    Tu peux regarder SCALPEL de Florian Goo (sur le forum) il parse du C++ avec boost.spirit, c'est vraiment bien foutu .

    http://42ndart.org/scalpel/
    Merci pour l'info, je vais jeter un coup d'oeil.

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/05/2015, 04h14
  2. Réponses: 2
    Dernier message: 04/07/2011, 11h01
  3. Traitement de PDF : quelle(s) librairie(s) ?
    Par VforVincent dans le forum Modules
    Réponses: 6
    Dernier message: 01/07/2011, 17h18

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