2010-02-01 2 views
0

Можете ли вы использовать маркер, определенный в лексере, в скрытом канале в одном правиле анализатора, как если бы это был обычный токен? Сгенерированный код Java ...Antlr3 - токен HIDDEN в парсере

благодаря

ответ

1

Когда вы строите CommonTokenStream, вы сказать, что это какой канал использовать. Токены на других каналах не будут видны синтаксическому анализатору.

+0

Я ссылаюсь на это http://www.antlr.org/wiki/pages/viewpage.action?pageId=557063. Но не будучи экспертом в ANTLR, он не понимает, как использовать эти методы. спасибо – Batman

1

Да, вы можете использовать скрытый токен в Parser.

Мы делаем это все время. Единственная проблема заключается в том, что вам нужно знать, когда ее искать.

У Antlr есть несколько терминов, которые он использует.

A Hidden токен просто путешествует по отдельному потоку. Пользователь всегда может проверять наличие скрытых токенов, вызывая getHiddenAfter или getHiddenBefore на токенах, совпадающих по времени.

Примечание: Может быть более одного токена скрыто, до или после, согласованный токен, чтобы вы проходили через них.

Значок Discarded фактически удаляется, когда вы говорите лексеру о его отмене. Он никогда вас не увидит.

Смежные вопросы