Как заставить правило парсера Antlr читать как по умолчанию, так и из скрытого канала

Я использую обычное разделение пробелов в скрытом канале, но у меня есть одно правило, согласно которому я хотел бы включать любые пробелы для последующей обработки, но любой найденный мной пример требует очень странного ручного кодирования.

Нет простого варианта для чтения из нескольких каналов, например, возможность поставить пробел с самого начала.

Пример. это правило лексера WhiteSpace

WS  :   ( ' '
        | '\t'
        | '\r'
        | '\n'
        ) {$channel=HIDDEN;}
    ;

И это мое правило, в котором я хотел бы включить пробелы

raw :   '{'? (~('{'))*;

В основном это правило перехвата всего для захвата любого контента, который не соответствует другим правилам, для обработки другим шаблоном, и поэтому мне нужно исходный поток.

Я надеялся на {$ channel == DEFAULT || $ channel == HIDDEN} пример синтаксиса, но не могу его найти.

Моей целью будет C #, но я могу переписать примеры Java, если потребуется.

6
задан David Mårtensson 21 April 2011 в 08:59
поделиться