, если я использую эту грамматику:antlr4 разбора с неиспользуемыми правилами
grammar NameValue;
nameValue: (name=ID ':' value=ID)+ EOF;
//idWithSpace : ID (' ' ID)*;
ID : [a-zA-Z]+ ;
WS : [ \t\r\n]+ -> skip ; // Define whitespace rule, toss it out
и этот вход:
a:b
a : b
A : B
я получаю эту разобрана:
(nameValue a : b a : b A : B <EOF>)
но если я раскомментировать idWithSpace line, я получаю этот сингл:
line 2:1 extraneous input ' ' expecting ':'
line 2:3 extraneous input ' ' expecting ID
(nameValue a : b a : b A : B <EOF>)
почему добавление правила idWithSpace
idWithSpace : ID (' ' ID)*;
что не ссылается, вызывает синтаксический анализ изменить?
Я предполагаю, что проблема в том, что пространство как пропущено, так и используется в правиле idWithSpace. Зачем вам нужно это пространство перед ID? – Divisadero