Я использую ANTLR для токенизации простой грамматики, и мне нужно различать ID:
ID : LETTER (LETTER | DIGIT)* ;
fragment DIGIT : '0'..'9' ;
fragment LETTER : 'a'..'z' | 'A'..'Z' ;
и RESERVED_WORD:
RESERVED_WORD : 'class' | 'public' | 'static' | 'extends' | 'void' | 'int' | 'boolean' | 'if' | 'else' | 'while' | 'return' | 'null' | 'true' | 'false' | 'this' | 'new' | 'String' ;
Скажем, я запускаю лексер на ввод:
class abc
Я получаю два маркера идентификатора для «класса» и «абв», в то время как я хочу, чтобы «класс» распознавался как RESERVED_WORD. Как мне это сделать?