В моих текстовых файлах я могу иметь как элементы пути (например, 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
.
Как мне этого добиться?