J'ai une simple grammaire ANTLR, que j'ai dénudée à son strict minimum pour démontrer ce problème. J'utilise ANTLRworks 1.3.1.ANTLR jetons de non-concordance lexer
grammar sample;
assignment : IDENT ':=' NUM ';' ;
IDENT : ('a'..'z')+ ;
NUM : ('0'..'9')+ ;
WS : (' '|'\n'|'\t'|'\r')+ {$channel=HIDDEN;} ;
De toute évidence, cette déclaration est acceptée par la grammaire:
x := 99;
Mais celui-ci est aussi:
x := @!$()()%99***;
sortie de l'ANTLRworks Interprète:
ANTLR Interpreter diagram http://cs.sierracollege.edu/~barry/antlr-lexer.png
Qu'est-ce que je fais mal? Même d'autres exemples de grammaires fournies avec ANTLR (telles que la grammaire CMinus) présentent ce comportement.
J'ai le msg err suivant à venir en exécutant « x: = @! $()()% 99 ***; " contre votre exemple: ligne 1: 5 aucune alternative viable au caractère '@' ligne 1: 6 aucune alternative viable au caractère '!' ... –
Vous ne recevez pas ces messages? –