У меня есть грамматика ANTLR, такая как:
grammar HelloGrammar1;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
STATEMENT : 'hello' ID ';' ;
WS : (' '|'\t'|'\r'|'\n')* ;
Я хочу, чтобы она проанализировала следующий текст: hello qwerty ;
.Это не работает таким образом.Если я изменю свою строку на helloqwerty;
, все в порядке.Я также могу изменить грамматику на:
grammar HelloGrammar2;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
STATEMENT : 'hello' WS ID WS ';' ;
WS : (' '|'\t'|'\r'|'\n')* ;
И в этом случае hello qwerty ;
работает нормально.Можно ли заставить ANTLR автоматически пропускать пробелы?(т.е. - я хочу, чтобы HelloGrammar1 работал с hello qwerty ;
)
Обновление
Если это имеет смысл: я тестирую его в ANTLRWorks.
Обновление 2
Также пробовал так:
grammar HelloGrammar;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
STATEMENT : 'hello' ID ';' ;
WS : (' '|'\t'|'\r'|'\n') { $channel = HIDDEN; } ;
Все еще не работает.
Обновление 3
Я использую вкладку "Переводчик" с выбранным правилом "ЗАЯВЛЕНИЕ".