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

Langages de programmation Discussion :

Quel langage pour développer un compilateur?


Sujet :

Langages de programmation

  1. #1
    Membre régulier Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Points : 81
    Points
    81
    Par défaut Quel langage pour développer un compilateur?
    Dans le cadre d'un projet professionnel je souhaite développer un langage et donc un compilateur.

    Le fait est que j'hésite sur le langage à utiliser. Mes principaux soucis étant bien entendu la rapidité et la gestion de la mémoire. J'avais au début fixé mon choix sur le C avant de découvrir les langages intermédiaires, tel que le c--.

    Mais peu d'infos circulent sur le sujet, et la majorité des bouquins sur la théorie des langages ne traitent pas vraiment cette partie, ou bien j'ai du sauter des lignes

    Alors si vous avez des conseils à ce sujet...

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    L'utilisation de Lex/Yacc (Flex/Bison) n'est pas suffisante pour tes besoins ?

  3. #3
    Membre régulier Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    L'utilisation de Lex/Yacc (Flex/Bison) n'est pas suffisante pour tes besoins ?
    Merci pour ta réponse mais ça me permettra uniquement de générer du code en C, chose que je pourrais également faire moi-même...

    La question est si le C est un choix approprié pour programmer un compilateur et surtout quels sont les alternatives.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par inddzen Voir le message
    La question est si le C est un choix approprié pour programmer un compilateur et surtout quels sont les alternatives.
    Tout dépend du résultat que tu vises... La vitesse de compilation "pure", la robustesse du compilo, l'évolution rapide et simple du langage ?
    Ensuite, tu veux compiler pour quelle cible ? Ton OS, donc avoir un exécutable "normal" ? Un langage source intermédiaire, type C/C++ ? Une machine virtuelle ?

    Le C est très adapté pour obtenir un compilateur très performant. Par contre, sa maintenance (sans outils de type Lex/Yacc) risque de devenir assez vite problématique.
    Si tu veux un langage très évolutif, ou un compilateur extrêmement robuste, il faudrait peut-être te tourner vers des langages fonctionnels, mais tu risques de "payer" cette robustesse par une vitesse d'exécution sensiblement plus lente, et une consommation de ressources système également plus importante.

    Dans tous les cas, il te faut bien comprendre qu'un compilateur est dédié à un langage source (le tien, ici), et à une plate-forme de destination (que tu n'as pas donnée, pour l'instant). Si tu changes la plate-forme de destination, tu devras modifier ton compilateur et/ou en faire un portage.

  5. #5
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par inddzen Voir le message
    quels sont les alternatives.
    Caml entre autres.
    http://flint.cs.yale.edu/cs421/case-for-ml.html

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    Le C--, pour ce que j'en comprend, c'est un langage intermédiaire pour la programmation fonctionnelle ( genre LISP ) là où l'utilisation du C comme langage intermédiaire n'est pas aisé.

    Enfin peut être que tu veux faire un langage utilisant la programmation fonctionnelle, je ne sais pas.

    Après euh ben tu fais ce que tu veux, ça dépend de tes besoins. Quels sont tes besoins?

    Beaucoup de langages compilés ne le sont-ils pas dans leur propre langage? ( bon le début est difficile )

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Dans le cadre d'un projet professionnel je souhaite développer un langage et donc un compilateur.
    Développer un langage pour des métiers particuliers me semblait une solution évidente il y a 15 ans.
    Aujourd'hui, pour les nouvelles versions d'appli de ce type pour lesquelles j'avais créé un interpreteur, j'envisage plutôt de proposer un langage standard (avec son environnement de dévellopement gratuit) et de créer pour les utilisateurs des objets métier.

    Par exemple, le langage pourrait être C# ou Vb.net avec, coté utilisateurs, Visual Studio Express (gratuit) + ta librairie d'objets métiers.

    Sinon, par rapport à Java, Delphi ou C#, je ne choisirai pas C pour créer un compilateur, en raison de ses faiblesses dans la gestion des chaines de caractères.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Sinon, par rapport à Java, Delphi ou C#, je ne choisirai pas C pour créer un compilateur, en raison de ses faiblesses dans la gestion des chaines de caractères.
    Dans un compilateur, les chaines de caractères, on ne les voit que dans l'analyse lexicale... C'est pour cela qu'on utilise LEX ou des outils automatiques de générations d'analyseurs lexicaux.

    Pour revenir au sujet de départ, LEX et YACC (ou tout outil similaire) sont réellement des must (sauf si on va vers un langage qui n'a pas une grammaire adaptées à ces outils... les descendants d'APL, par exemple). Pour un langage assez simple, YACC avec quelques règles de traductions dirigées par la syntaxe, ca peut produire un interpréteur en très peu de temps.

    Pour un langage complexe, écrire un parser à la main, et l'écrire juste, c'est une énorme perte de temps.

    Comme LEX et YACC produisent du C; cela oriente le développement vers le C, ou des langages compatibles avec lui. Il y a aussi pas mal de bons livres sur l'écriture de compilateurs, qui utilisent des exemples en C, et un excellent compilateur, très très utilisé, dont les sources sont ouvertes et en C.

    Francois

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 435
    Points : 37 020
    Points
    37 020
    Par défaut
    Salut,

    Il faut différencier le langage de programmation du compilateur du langage généré par celui ci.
    Le langage généré peut être du langage machine, du Lisp, du Java, du C...
    Le langage de programmation peut être de l'assembleur du C, du Lisp, ...

    Quelque soit le langage de programmation retenu, vous devriez trouver des équivalent de Bison/Flex vous permettant de faire les analyseurs lexicaux, syntaxiques et la génération de code.

    Si vous voulez générer autre chose que des fichiers compilables ou interprétables... vous augmentez significativement la complexité de votre projet...
    Regardez la Gnu Compiler Collection.
    Elle apporte déjà pas mal de briques réutilisables pour ce genre de projet.

    - W

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    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 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Lex/yaxx, cela reste très roots comme approche. Certes il facilitent la tâche, mais derrière cela reste du C, et une certaine attention est toujours requise.

    Accessoirement, il y a aussi:
    - boost.spirit pour une solution C++ qui marchera bien pour des grammaires simples (autrement, compiler le compilateur s'avèrera lent)
    - ANTLR, multilangages dans mes souvenirs

    et quelques autres frameworks.

Discussions similaires

  1. Quel langage pour développer à la manière d'Apple
    Par doudounette dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 20/08/2010, 16h19
  2. Quel langage pour développer un OCX ?
    Par PhunkyBob dans le forum Débuter
    Réponses: 8
    Dernier message: 13/02/2010, 14h11
  3. Quel langage pour développer ce jeu ?
    Par CinePhil dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 31/08/2008, 19h02
  4. Quel langage pour développer des scripts
    Par SergeBl dans le forum Windows
    Réponses: 3
    Dernier message: 26/02/2007, 13h56
  5. Quel langage pour développer un logiciel de télétransmission
    Par gidebo dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 28/08/2003, 15h19

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