PS
Если взять более менее сложный язык, то там скорее всего встретятся подобные штуки:
ruleЕсли при парсинге rule сфейлились на subrule, то по крайней мере не надо перевычислять токен A, когда попадаем во вторую альтернативу.
: subrule
| A B
;
subrule
: A C
;
Возможно в большинстве случаев фазу лексинга можно заинлайнить прямо в парсер, но от этого токены же не исчезнут.