2011-09-16 2 views
2

Я новичок в ANTLR и хочу прояснить некоторые основные понятия.Основные понятия ANTLR

  1. Является ли синтаксический анализатор, получающий токен от лексера? Если да, то как концепция скрытого канала вписывается в этот токен? Означает ли это для каждого токена в потоке, у него есть атрибут, показывающий, к какому каналу он принадлежит?

  2. Я хочу получить доступ к скрытым канальным токенам (пробелам или комментариям), которые, скажем, предшествуют моему собственному токену в парсере. Я думаю, что я должен явно написать код. Это через org.antlr.runtime.TokenStream.get()? Какое значение параметра должно быть присвоено ему?

ответ

3

JavaMan писал:

Является ли анализатор приема потока токена из лексера?

A TokenStream обернут вокруг лексера. По умолчанию Parser «опросывает» этот поток для токенов по мере необходимости (т. Е. Вход не разблокируется за один проход, а буферизуется).

JavaMan писал:

Если да, то каким образом концепция скрытого канала вписывается в этот поток токенов? Означает ли это для каждого токена в потоке, у него есть атрибут, показывающий, к какому каналу он принадлежит?

По умолчанию TokenStream будет производить только токены, размещенные на канале DEFAULT. Однако вы можете изменить канал во время разбора (или прочитать более одного канала) [1].

JavaMan писал:

Я хочу, чтобы получить доступ скрытых маркеров канала (белое-пространство или комментарии), которые, скажем, предшествующий мой собственный маркер в анализаторе. Я думаю, что я должен это сделать.

Правильно, см. [1].



[1] How do I get an Antlr Parser rule to read from both default AND hidden channel

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