У меня есть действительно простая грамматика ANTLR, которую я пытаюсь заставить работать, но в настоящий момент терпит неудачу. Буду очень признателен за некоторые указания на это ...
root : (keyword|ignore)*;
keyword : KEYWORD;
ignore : IGNORE;
KEYWORD : ABBRV|WORD;
fragment WORD : ALPHA+;
fragment ALPHA : 'a'..'z'|'A'..'Z';
fragment ABBRV : WORD?('.'WORD);
IGNORE : .{ Skip(); };
Со следующим тестовым вводом:
"some ASP.NET and .NET stuff. that work."
Мне нужно дерево, которое представляет собой просто список узлов ключевых слов,
"some", "ASP.NET", "and", ".NET", "stuff", "that", "work"
На данный момент я получаю
"some", "ASP.NET", "and", ".NET", "stuff. that",
(по какой-то причине в последнем ключевом слове появляется ".", И в нем пропущено слово "работа"
Если я изменю предложение ABBRV на
fragment ABBRV : ('.'WORD);
тогда это работает нормально, но я получаю ключевое слово (asp) и ключевое слово (.net) - отдельно - но они нужны мне как один токен.
Любая помощь, которую вы можете оказать, будет очень признательна.