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

EDI et Outils pour Java Discussion :

[ANTLR]gérer des mots réservés


Sujet :

EDI et Outils pour Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut [ANTLR]gérer des mots réservés
    salut

    Déjà j'espère que je poste au bon endroit... je m'y perd un peu avec tous ces sous forums ...

    Je suis en train de faire joujou avec ANTLR et j'ai un soucis de récursion infinie... Erreur de newbie, mais je ne m'en sors pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    REMOVE          : "remove"  { System.out.println("Found REMOVE: "+getText()); $setType(Token.SKIP);} |
    REMOVEAT          : "removeAt"  { System.out.println("Found REMOVEAT: "+getText()); $setType(Token.SKIP);} |
    voila je voudrais faire co-exister ces 2 mots mais ... lorsqu'il tombe sur le token "remove" il ne cherche pas plus loin que la règle REMOVE ...
    Que faire?
    d'avance

  2. #2
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    bon je continue....
    J'ai trouver une piste mais ca ne me tente pas vraiment
    voici le résultat :
    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
     
    REMOVE
      :  ('r' 'e' 'm' 'o' 'v' 'e' 'A' 't') => "removeAt"
            {
                System.out.println("Found REMOVEAT: "+getText());
                $setType(Token.SKIP);
                //$setType(REMOVEAT);
            }
         |"remove"
            {
                System.out.println("Found REMOVE: "+getText());
                $setType(Token.SKIP);
                //$setType(REMOVE);
            }
      ;
    ca fonctionne mais c'est vraiment pas joli
    personne pour un peu d'aide ?

  3. #3
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Garde ta 1° solution et ajoute l'option

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    options {
        k = 2;
    }
    Juste pour voir !

  4. #4
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    j'avais testé...
    mais même avec k = 10 ca ne passait pas ...

  5. #5
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    et si tu fais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tokens {
      REMOVE = "remove";
      REMOVEAT = "removeAt";
    }
     
    SYMBOL
      options { testLiterals = true; }
      : ('a'..'z' | 'A'..'Z')+;

  6. #6
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    Citation Envoyé par MarneusCalgarXP
    et si tu fais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tokens {
      REMOVE = "remove";
      REMOVEAT = "removeAt";
    }
     
    SYMBOL
      options { testLiterals = true; }
      : ('a'..'z' | 'A'..'Z')+;
    je croyais que l'utilisation du bloc tokens permettait uniquement de déclarer des mot "symbolique" permettant par la suite de créer des node lorsque tu es en format AST

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

Discussions similaires

  1. Comment gérer des mots clés ?
    Par Apranax dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/07/2014, 22h01
  2. [Batch] Variable texte contenant des mots réservés
    Par canorra dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 10/09/2012, 16h02
  3. [Toutes versions] Mots réservés pour les expressions des macros
    Par damsmut dans le forum IHM
    Réponses: 3
    Dernier message: 14/01/2010, 20h06
  4. la liste des mots clés réservés de PYTHON ?
    Par clavier12AZQSWX dans le forum Général Python
    Réponses: 2
    Dernier message: 25/05/2009, 22h15
  5. Réponses: 2
    Dernier message: 10/10/2006, 12h38

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