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 :

Analyse LL(1) : Gérer certains cas et table d'analyse


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de minirop
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par défaut Analyse LL(1) : Gérer certains cas et table d'analyse
    Bonjour,
    j'ai traduis partiellement l'article "LL_Parser" de la wikipedia anglaise puis codé l'exemple, mais j'ai un problème au niveau de certains cas lorsque je veux en rajouter.

    1/ Comment gérer les cas où les premiers tokens sont identiques. exemple :
    1. S -> S+S
    2. S -> S*S
    3. S -> (S)
    on voit que les règles 1 et 2 commencent pareil, comment les gérer avec un analyseur LL(1) (autrement qu'avec un analyseur LL(2)) ?

    EDIT : j'ai trouvé la parade, suffit de faire :
    1. S -> S OP S
    2. OP -> +
    3. OP -> *
    4. S -> (S)

    2/ Je n'ai absolument rien compris à la construction de la table d'analyse : lien ici, quelqu'un aurait il un lien français ou m'aider à comprendre ?

    merci

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Comment gérer les cas où les premiers tokens sont identiques. exemple :
    En fait tu essaie de construire un automate LL(1) pour une grammaire qui ne l'est pas. Ta grammaire est récursive gauche, elle n'est donc pas ll(k) (ie: tu pourra être amené à trouver au moins k+1 caractères avant de pouvoir appliquer une règle de décision). Le problème ne vient pas des opération + et * mais plutôt de l'axiome :

    S -> S Op S

    Pour construire l'automate, il faut passer par un automate LR (au minimum), tu peux jeter un oeil là dessus, ça peut éventuellement t'aider.

    http://www.developpez.net/forums/sho...d.php?t=422693

    Je n'ai absolument rien compris à la construction de la table d'analyse
    La table construit deux ensembles : First et Follow puis ensuite construit l'automate à l'aide de la méthode suivante :

    T[A,a] contains the rule A → w if and only if
    a is in Fi(w) or
    ε is in Fi(w) and a is in Fo(A).
    Ce qu'ils appellent Fi c'est First et ce qu'ils appellent Fo, c'est Follow.

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

Discussions similaires

  1. [JOINTURES] interêt dans certain cas
    Par nicotine002 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/06/2006, 17h22
  2. fonctions désactivées sauf certains cas
    Par ricoba19 dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 16h51
  3. Quelle requête liera deux tables en analysant leur contenu ?
    Par Monbasinstinct dans le forum Access
    Réponses: 14
    Dernier message: 13/04/2006, 18h03
  4. [POO] Modèle objet: this inutilisable dans certains cas?
    Par vlord dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 13/08/2005, 10h41
  5. Commande Update... vider certains champ dans table.
    Par angelevil dans le forum ASP
    Réponses: 3
    Dernier message: 04/05/2005, 21h08

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