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

Algorithmes et structures de données Discussion :

Conception d'un compilateur


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 402
    Billets dans le blog
    16
    Par défaut Conception d'un compilateur
    bonjour,

    suis-je bien au bon endroit pour parler d'un problème qui me met dans l’embarras, dans le livre "compilateurs principes techniques et outils"?

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Peut-être, voire très probablement. Quel est ce problème ? De là, on pourra le dire plus précisément .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 402
    Billets dans le blog
    16
    Par défaut
    c'est pour dire voilà:
    dans le chapitre sur l'analyseur syntaxique descendant, dans la section de rattrapage d'erreur, l'entrée M[E,')'] est synchro et M[F,+] est aussi synchro. Pourtant, dans l'entrée erronée ")id*+id$", la parenthèse fermante est sautée tandis que quand on arrive à l'étoile, c'est le non-terminal F qui est dépilé.
    quelqu'un pourrait-il m'éclairer su cette contradiction?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    C'est donc bien le bon forum, mais la question est trop spécifique pour moi, je passe mon tour .

    Pourrais-tu donner plus de contexte, histoire que des gens qui n'ont pas le livre sous la main puissent réfléchir un peu à ta question ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 226
    Par défaut
    Pas sûr qu'on soit sur le bon forum, y a-t-il un forum voyance/boule de cristal ?

  6. #6
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 402
    Billets dans le blog
    16
    Par défaut
    il y a tout un chapitre sur le sujet, je ne sais pas si je serais capable de tout résumer:
    grammaire non contextuelle :

    E -> T E'
    E' -> + T E' | epsilon (epsilon est la production vide)
    T -> F T'
    T' -> * F T' | epsilon
    F -> ( E ) | id

    table d'analyse :

    figure 4.22:

    Nom : tabledanalyse.png
Affichages : 516
Taille : 678,9 Ko
    Il y a une pile. Au départ, elle a le dollar au fond et l'axiome( = E ) au dessus et au somment. En avançant dans le flux d'entrée, de deux chose l'une. Le sommet de la pile est un terminal(un symbole d'entré id,+,*,(,),$) si le flux d'entrée donne un terminal qui est au somment de la pile, le terminal est dépilé et on avance dans le flux d'entrée. Sinon, il y a erreur. Si par contre le sommet de la pile est un non-terminal, on le dépile et on empile les symboles (terminaux et non-terminaux) de la production se trouvant dans la table d'analyse à la ligne du non-terminal et la colonne du terminal, avec le symbole le plus à gauche de la production, au sommet de la pile. cet algo se termine quand on a plus que le dollar dans la pile.

    pour le rattrapage sur erreur, l'idée est que si on rencontre une erreur, les symboles sont sautés jusqu'à avoir dans l'entrée un terminal élément d'un ensemble de synchronisation. Alors on saute le terminal et on dépile lorsque le terminal de synchronisation est rencontré dans l'entrée (c'est ce que j'ai compris).

    je cite le livre:
    Cette table s'utilise de la façon suivante. Si l'annalyseur syntaxique cheche l'entré M[A,a] (M est le tableau, A un non-terminal et "a" un symbole) et constate qu'elle est vide, alors le symbole d'entrée a est sauté.Si l'entrée est "synchro", alors le non-terminal au sommet de la pile est dépilé afin d'essayer de contiinuer l'analyse syntaxique. Si une unité lexicale au sommet de la pile ne correspond pas au symbole d'entrée,alors on déplie l'unité lexicale, comme indiqué précédement.
    Sur l'entrée erronnée )id*+id, l'analyseur et le mécanisme de ratrapâge d'erreur de la figure 4.22 se comporte comme indiqué à la figure 4.23

    figure 4.23:

    Nom : rattrapage.jpg
Affichages : 465
Taille : 372,7 Ko

    mon problème est que M[E,')'] est une entrée sychro E et n'est pas dépilé. Ils ont mis sychro à M[E,')'] car ')' est dans l'ensemble des symboles suivant E. Peut-être qu'il ne faudrais pas mettre '(' dans l'ensemble de synchronisation, malgré qu'il soit dans l'ensemble des suivants de E?
    qu'en pensez-vous?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conception d'un compilateur (Parser)
    Par lastico21000 dans le forum Langage
    Réponses: 1
    Dernier message: 12/05/2011, 20h03
  2. compilateur c++ langage de conception
    Par guillaume07 dans le forum C++
    Réponses: 11
    Dernier message: 01/10/2010, 14h36
  3. conception et realisation d'un compilateur
    Par id.prog dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 20/10/2008, 14h35
  4. [Concept] Réplication
    Par melinda dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/03/2003, 17h29
  5. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16

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