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 :

comment realiser un compilateur ?


Sujet :

Générateurs de compilateur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut comment realiser un compilateur ?
    bonjour
    je doit realiser un compilateur qui a comme une grammaire un sous ensemble de la grammaire du langage pascal il faut passer dabord par une phase lexicale et une autre syntaxique mais le pbm au detailles du travail

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    et?

    Nas'

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Pour réaliser un compilateur, il faut:

    1. Définir exactement la syntaxe que ton compilateur devra gérer, et les fonctionnalités que tu attends. Le compilateur doit-il optimiser le code? Quel backend? Cette 1ère phase s'appelle la phase de spécification, et elle te permet de répondre aux questions "Quoi?", "Quelles fonctionnalité?", etc.
    2. La phase de conception est la plus intéressante et celle qui te demandera le plus de soins. Tu devras diviser ton problème en sous-problèmes ou modules, et diviser chaque sous-problème en d'autres sous-problèmes plus simples à résoudre. L'achitecture de ton compilateur se mettra petit à petit en place lors de cette phase de conception qui te permettra de répondre à la question "Comment réaliser un compilateur qui réponde aux spécification de la phase 1?"
    3. C'est la phase d'implantation dans le langage que tu trouveras le plus adapté.


    C'est un gros projet qui demande beaucoup de travail, et une approche très structurée dans le respect des bonnes pratiques du génie logiciel. J'imagine que tu as suivi un cours sur le sujet auparavant ou qu'un tel cours est programmé en parallèle du projet. Le sujet est trop vaste pour pouvoir te donner des lignes directrices dans le contexte d'un forum technique (vise plutôt à répondre à des questions précises). Il existe d'excellents ouvrages qui pourront t'accompagner dans ton projet:
    • Modern Compiler Implementation in Java, de Andrew W. Apple chez Cambridge University Press


    Il y en a bien d'autres, mais j'ai bien aimé celui là. Sinon Google est ton ami. Voici une référence à consulter sur le web:
    http://cs.wwc.edu/~aabyan/Linux/compiler/

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Ca, c'est un exercice pour un cours. Donc le prof devrait avoir donne suffisamment d'info pour le faire. Tu trouves quelqu'un qui a ete au cours et tu empruntes ses notes pour les copier.

    Si tu ne t'en sorts pas comme ca, tu cherches de la doc quelque part. Le prof a vraisemblablement donne une bibliographie. Je peux y a jouter ces bouquins: http://www.cs.vu.nl/~dick/MCD.html, http://www.oberon.ethz.ch/WirthPubl/CBEAll.pdf et ce lien: http://compilers.iecc.com/crenshaw.

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par hanene_z
    une phase lexicale et une autre syntaxique mais le pbm au detailles du travail
    As-tu le droit d'utiliser des outils tel lex/flex (analyseur lexical) et bison/yacc (analysieur syntaxique) ? J'imagines que tu dois également créer un analyseur sémantique ? (bon typage, variable bien déclaré...)

    Quel est le langage de ton code cible ? (code 3 adresses ?)

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut
    Citation Envoyé par millie
    As-tu le droit d'utiliser des outils tel lex/flex (analyseur lexical) et bison/yacc (analysieur syntaxique) ? J'imagines que tu dois également créer un analyseur sémantique ? (bon typage, variable bien déclaré...)

    Quel est le langage de ton code cible ? (code 3 adresses ?)
    merci a votre reponse
    non je ne peut pas utiliser importe quel outils et je doit realiser ce travail moi meme en langage C

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Il manque pas mal de détails que tu ne nous as pas donnée.

    Je te signales que lex et yacc fonctionne très bien en C. C'est un outil, qui à partir de fichiers y (grammaire) et l (lexemes) fournit des fichiers en langage C. Il est totalement possible d'intégrer du code C dans ces fichiers.

    Maintenant, les analyseurs lexicals et syntaxiques ne sont pas évidents à mettre en oeuvre. Il faut pour cela implémenter des automates normaux (pour l'analyseur lexical) et des automates à piles (pour l'analyseur syntaxique). As-tu déjà vu ces notions ?

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par millie
    Il manque pas mal de détails que tu ne nous as pas donnée.

    Je te signales que lex et yacc fonctionne très bien en C. C'est un outil, qui à partir de fichiers y (grammaire) et l (lexemes) fournit des fichiers en langage C. Il est totalement possible d'intégrer du code C dans ces fichiers.

    Maintenant, les analyseurs lexicals et syntaxiques ne sont pas évidents à mettre en oeuvre. Il faut pour cela implémenter des automates normaux (pour l'analyseur lexical) et des automates à piles (pour l'analyseur syntaxique). As-tu déjà vu ces notions ?
    Je ne suis pas au courant des cursus traditionnels, mais j'imagine que ce type de projet doit faire suite à un cours sur la conception de compilateurs et les concepts algorithmiques associés. Au pire des cas, le cours et ses notions théoriques sont présentés en parallèle au projet.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par mujigka
    Je ne suis pas au courant des cursus traditionnels, mais j'imagine que ce type de projet doit faire suite à un cours sur la conception de compilateurs et les concepts algorithmiques associés. Au pire des cas, le cours et ses notions théoriques sont présentés en parallèle au projet.

    Thierry
    Justement, dans les cours de Compilation "classique", on peut y avoir figurer effectivement les notions d'automates et d'automates à piles, mais leur implémentation n'est pas forcement vu. Genre pour les automates qui n'ont en général jamais été implementé par les élèves, on ne le revoit que de manière théorique et les cours disent : "Ceci n'était pas un cours sur les automates, veuillez en regarder un...". Pareil pour les automates à pile (qui sont moins classique) mais dont l'implémentation n'est pas précisé en général.

    C'est pourquoi je m'étonnes qu'il n'ait pas à utiliser d'autres outils (mais peut être qu'il a vu précisiment de tels implémentations, c'est pourquoi je demandais )

Discussions similaires

  1. [Caml] Comment faire un compilateur PASCAL
    Par natyoupla dans le forum Caml
    Réponses: 6
    Dernier message: 20/02/2007, 10h10
  2. Réponses: 2
    Dernier message: 09/05/2006, 17h28
  3. comment realiser un intersect?
    Par Yogy dans le forum InterBase
    Réponses: 1
    Dernier message: 22/11/2005, 14h10
  4. Réponses: 3
    Dernier message: 19/10/2005, 15h58
  5. Réponses: 6
    Dernier message: 15/05/2005, 16h25

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