Практическое различие между правилами парсера и правилами лексера в ANTLR?

Я понимаю теорию разделения правил парсера и правил лексера в теории, но каковы практические различия между этими двумя утверждениями в ANTLR:

my_rule: ... ;

MY_RULE: ... ;

Получают ли они разные деревья АСТ? Отличная производительность? Потенциальные двусмысленности?

Ответы

Ответ 1

Jen написал:

... каковы практические различия между этими двумя утверждениями в ANTLR...

MY_RULE будет использоваться для токенизации вашего источника ввода. Он представляет собой фундаментальный строительный блок вашего языка.

MY_RULE вызывается из анализатора, он состоит из нуля или более других правил парсера или токенов, созданных лексером.

Это различие.

Jen написал:

Получают ли они разные деревья АСТ? Отличная производительность?...

Парсер строит АСТ с помощью токенов, созданных лексером, поэтому вопросы не имеют смысла (для меня). Лексер просто "кормит" анализатор 1-мерным потоком токенов.