Antlr3 - скрытый токен в парсере - PullRequest
0 голосов
/ 01 февраля 2010

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

спасибо

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

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

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

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

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

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

Discarded токен фактически удаляется, когда вы указываете лексеру отказаться от него.Он никогда тебя больше не увидит.

1 голос
/ 01 февраля 2010

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

...