Делаем путь и элементы пути однозначными - PullRequest
0 голосов
/ 07 ноября 2019

В моих текстовых файлах я могу иметь как элементы пути (например, a), так и пути (например, a.b.c). Тот факт, что путь и элемент пути могут быть неоднозначными, вызывает у меня головную боль.

Если у меня есть подобные элементы лексера

PATH : PATH_ELEMENT('.'PATH_ELEMENT)* ;
PATH_ELEMENT : [a-zA-Z_][a-zA-Z0-9_]* ;

и у меня есть исходный текст

dir : a
path1 : a.b.c
path2 : a

Если я использую PATH для обоих, он будет работать, но не будет сообщать об ошибке, если dir имеет сегментированный путь.

Если я поменяю местами порядок элементов лексера и использую PATH_ELEMENT для dir и PATH для pathX, тогда первые два будут работать нормально, но тогда path2 будет соответствовать PATH_ELEMENT, когда ожидается PATH.

Как мне этого добиться?

...