Чтобы прояснить, что Барт сказал в своем ответе:
The options{filter=true;} only works in lexer-grammars. You will need to define a parser- and lexer grammar in two separate files:
На самом деле вам не нужно помещать лексер и парсер в 2 отдельных файла. Вам просто нужно поместить правило фильтра в грамматику лексера. И лексер, и грамматика синтаксического анализатора могут находиться в одном файле.
Хотя совет Барта поместить их в отдельные файлы - это подход, который я обычно использую.
Итак, для примера вы можете сделать это в одном файле
Отдельный файл с парсером и лексером Grammar.g
parser grammar FooParser;
parse
: Number+ EOF
;
lexer grammar FooLexer;
options{filter=true;}
Number
: '0'..'9'+
;
Обратите внимание, что правило фильтрации находится в определении класса лексера, но лексер и анализатор находятся в одном файле.