Можете ли вы использовать маркер, определенный в лексере, в скрытом канале в одном правиле анализатора, как если бы это был обычный токен? Сгенерированный код Java ...Antlr3 - токен HIDDEN в парсере
благодаря
Можете ли вы использовать маркер, определенный в лексере, в скрытом канале в одном правиле анализатора, как если бы это был обычный токен? Сгенерированный код Java ...Antlr3 - токен HIDDEN в парсере
благодаря
Когда вы строите CommonTokenStream, вы сказать, что это какой канал использовать. Токены на других каналах не будут видны синтаксическому анализатору.
Да, вы можете использовать скрытый токен в Parser.
Мы делаем это все время. Единственная проблема заключается в том, что вам нужно знать, когда ее искать.
У Antlr есть несколько терминов, которые он использует.
A Hidden
токен просто путешествует по отдельному потоку. Пользователь всегда может проверять наличие скрытых токенов, вызывая getHiddenAfter
или getHiddenBefore
на токенах, совпадающих по времени.
Примечание: Может быть более одного токена скрыто, до или после, согласованный токен, чтобы вы проходили через них.
Значок Discarded
фактически удаляется, когда вы говорите лексеру о его отмене. Он никогда вас не увидит.
Я ссылаюсь на это http://www.antlr.org/wiki/pages/viewpage.action?pageId=557063. Но не будучи экспертом в ANTLR, он не понимает, как использовать эти методы. спасибо – Batman