Je me suis mis à antlr, et je me casse déjà la nez (ce serait pas drôle sinon). J'ai donc suivi l'exemple "Cut and Paste" de la documentation, que j'ai voulu modifier un peu pour bien comprendre comment ça marche (et vu que je poste ici, c'est que c'est pas encore le cas).
Mon fichier t.g ressemble à ça :
class P extends Parser;
startRule
: a:ACTION
COMMA
n:NAME
{System.out.println(a.getText()+"la"+n.getText());}
;
class L extends Lexer;
// one-or-more letters followed by a newline
NAME: ( 'a'..'z'|'A'..'Z' )+ NEWLINE
;
NEWLINE
: '\r' '\n' // DOS
| '\n' // UNIX
;
ACTION: ( 'a'..'z'|'A'..'Z'|'0'..'9' )+
;
COMMA
: ','
;
Ce que je voudrais, c'est rentrer "couper pomme" et qu'il me sorte "couper la pomme" par exemple.
Toutefois quand je le passe au antlr, il me prévient que
ANTLR Parser Generator Version 2.7.4 1989-2004 jGuru.com
t.g: warning:lexical nondeterminism between rules NAME and ACTION upon
t.g: k==1:'A'..'Z','a'..'z'
Je sais pas de quoi il parle, ni comment résoudre ce problème...
# Ben, il y a ambiguité
Posté par Antoine Reilles (site web personnel) . Évalué à 3.
[^] # Re: Ben, il y a ambiguité
Posté par Adrien BUSTANY (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.