Скажем, у меня есть два правила, как ниже:Как «вычесть» лексерские правила в ANTLR?
printable_characters : '\u0020' .. '\uFFEF' ;
newline_characters : '\n' | '\r' ;
Теперь давайте предположим, что я хочу сделать новое правило под названием printable_no_newlines
. Я хотел бы сделать это путем вычитания из newline_characters
printable_characters
так:
printable_no_newlines : printable_characters - newline_characters ;
Этот синтаксис не работает в ANTLR3, но кто-нибудь знает, что лучше всего было бы эмулировать без повторного ввода всего правила?
Привет, Мартин. Я изменил свой пример, чтобы иметь больше смысла. Я не должен был использовать. * Для правила printable_characters. Если вы пересматриваете вопрос сейчас, имеет ли смысл, что я пытаюсь сделать? –
Некоторые из комментариев Мартина больше не актуальны, но ключевой момент этого невозможен без ручной записи разницы заданий. –
@Jeffrey: ваше редактирование все еще не делает запрос разумным. Поскольку 'newline_characters' не включены в' printable_characters' (поскольку они ниже U + 0020), в любом случае 'printable_no_newlines' будет таким же, как' printable_characters'. –