У меня есть простая грамматика, написанная на ANTLR4, которая включает (среди прочего) правило пробелов:
WhiteSpace : [ \t\r\n]+ -> skip;
Он интегрирован в приложение платформы NetBeans с помощью org.netbeans.spi.lexer.Lexer
. Когда на входе есть завершающий пробел (до EOF), я получаю следующее исключение:
java.lang.IllegalStateException: Lexer ExpressionLexer@2cdea2eb
returned null token but lexerInput.readLength()=1
lexer-state: null
tokenStartOffset=20, readOffset=21, lookaheadOffset=22
Chars: "\n" - these characters need to be tokenized.
Fix the lexer to not return null token in this state.
Как я могу сделать так, чтобы этот конечный пробел не вызывал ошибку?
Изменить: это работает правильно без ошибок, используя только код лексера и парсера ANTLR. Ошибка возникает только при интеграции с лексером NetBeans (и, возможно, другими интеграциями).