Фильтруйте токены ANTLR4 перед их использованием в парсереC#

Место общения программистов C#
Anonymous
Фильтруйте токены ANTLR4 перед их использованием в парсере

Сообщение Anonymous »

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

Код: Выделить всё

#if UNDEFINED
bla bla
#endif
Real Code here
перед передачей в анализатор следует преобразовать в показанный ниже

Код: Выделить всё

#if UNDEFINED
#endif
Real Code here
Моя идея состоит в том, чтобы вручную отсеивать экземпляры IToken после того, как они будут созданы CommonTokenStream. Что отлично работает для меня. Однако я пытаюсь выяснить, как лучше всего передать отфильтрованный список экземпляров IToken в анализатор. Изначально я рассматривал TokenStreamRewriter, однако этот парень, похоже, не делает то, что мне нужно.
Примечание: я не могу использовать синтаксический анализатор для выполнения этой работы, потому что парсеру это не нравится. незаконный неопределенный контент.
Сейчас я подумываю о создании подтипа CommonTokenStream, когда я бы установил поле токенов вручную и передал этот экземпляр синтаксическому анализатору. Но я не уверен, что это лучший способ.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-parser

Вернуться в «C#»