Я хочу разобрать Smalltalk.
Обычно в последовательности выражений им нужен токен PERIOD (.) Между ними как разделитель, например ';' в java. Самому выражению не нужен ПЕРИОД. Следовательно, я сопоставляю этот ПЕРИОД в правиле выражений:
expressions : expression (PERIOD expression)*;
И различные подправила для указанного выражения c не соответствуют ПЕРИОДУ сами по себе.
Однако есть один особый тип выражения, который вызывает собственные библиотеки:
<primitive: ABC>
И когда за ним следует другое выражение, PERIOD неожиданно не необходимо.
Как можно справиться с такой ситуацией?
Возможно, ввести ПЕРИОД. Из правила «примитива» скажите лексеру, что нужно добавить токен PERIOD. Но как?
Или есть лучшее решение для этой ситуации?
Фрэнк