J'essaie de faire correspondre ma grammaire à une chaîne entière, et d'avoir une erreur si elle ne peut pas consommer toute l'entrée. Au fond, cette pseudo regex:ANTLR match à la fin de l'entrée
\whitespace* [a-zA-Z]+ [-]? [a-zA-Z]+ \whitespace* $
Selon this, EOF devrait fonctionner. Alors, pensez à cette grammaire:
start : CHARS EOF
;
CHARS : ('a'..'z')+
;
Si je mets à l'entrée "hello"
dans ce code:
var ss = new Antlr.Runtime.ANTLRStringStream(input);
var lex = new autocompleteLexer(ss);
var tokens = new CommonTokenStream(lex);
var parser = new autocompleteParser(tokens);
return (BaseTree)(parser.start().Tree);
je reçois un AST avec deux enfants, HELLO
et EOF
, comme prévu. Mais si je mets l'entrée à "hello#"
, elle restitue le même arbre et ne se plaint pas du hash. Je ne suis pas sûr de ce que je fais mal.