1. #1
    Membre régulier

    Profil pro
    Inscrit en
    septembre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2006
    Messages : 130
    Points : 82
    Points
    82
    Billets dans le blog
    1

    Par défaut [Compilation] Définition dirigée par la syntaxe - exercice du purple dragon book

    bonjour,

    je ne sais pas si je suis dans le bon forum pour parler de ça.
    Il s'agit d'un exercice du livre "compilateurs principes techniques et outils".
    À savoir, ils nous donnent cette grammaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    S -> L , L | L
    L -> L B | B
    B -> 0 | 1
    Ils nous demandent d'écrire une définition dirigée par la syntaxe L-attribuée qui calcule la valeur d'un nombre binaire décrit par cette grammaire.
    Je ne suis pas à l'école, je me tourne vers vous pour me corriger cet exercice.

    ma réponse:
    d'abord, pour une dds L-attribuée, il faut modifier cette grammaire pour la rendre LL. ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    S -> L , L |  L
    L -> B R
    R -> B R | epsilon (production vide)
    alors voici les résultats de mon travail:
    L.côté et R.côté sont des attributs hérités
    les autres attributs sont synthétisés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    S -> L1 , L2
    règles sémantiques:
    S.val = L1.val + L2.val
    L1.côté = 1
    L2.côté = 0,5
    
    S -> L
    règles sémantiques:
    S.val = L.val
    L.côté = 1
    
    L -> B R
    règles sémantiques:
    L.val = R.val
    R.côté = L.côté
    
    R -> B R1
    règles sémantiques:
    R.val = ( R1.val + B.val x R1.poids ) x R.côté
    R1.côté = R.côté
    R.poids = R1.poids x 2
    
    R -> epsilon
    règles sémantiques:
    R.val = 0
    R.poids=1

    quelqu'un a une idée?

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    septembre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2006
    Messages : 130
    Points : 82
    Points
    82
    Billets dans le blog
    1

    Par défaut

    je précise aussi que B.val est un attribut hérité

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    septembre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2006
    Messages : 130
    Points : 82
    Points
    82
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par matser Voir le message
    je précise aussi que B.val est un attribut hérité
    en fait je ne crois pas

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    septembre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2006
    Messages : 130
    Points : 82
    Points
    82
    Billets dans le blog
    1

    Par défaut

    j'ajouterais cette petite modification à la production R -> BR1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    R -> BRrègle sémantique:
    B.h = B.val
    R.val = ( R1.val + B.h x R1.poids ) x R.côté
    R1.côté = R.côté
    R.poids = R1.poids x 2

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    septembre 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2006
    Messages : 130
    Points : 82
    Points
    82
    Billets dans le blog
    1

    Par défaut

    il manque aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    B -> 0
    règle sémantique:
    B.val = 0
    
    B -> 1
    règle sémantique:
    B.val = 1

Discussions similaires

  1. [Grammaire] Exposant dans une définition dirigée par la syntaxe
    Par matser dans le forum Général Algorithmique
    Réponses: 1
    Dernier message: 08/01/2017, 03h49
  2. Compiler un sln par code c#
    Par wonderliza dans le forum C#
    Réponses: 6
    Dernier message: 13/09/2007, 11h12
  3. DDT : "Developpement Dirigé par les Tests" utile ?
    Par manpac dans le forum Fichiers
    Réponses: 5
    Dernier message: 21/02/2007, 09h20
  4. Pb compilation: définitions multiples
    Par vincho dans le forum C
    Réponses: 7
    Dernier message: 19/07/2006, 21h29
  5. Réponses: 2
    Dernier message: 17/10/2005, 18h55

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