регулярные выражения flex (лексический анализатор) - Повторное использование определений

StackOverflow https://stackoverflow.com/questions/178963

Вопрос

У меня есть это рабочее определение:

IDENTIFIER   [a-zA-Z][a-zA-Z0-9]*

Я не хочу постоянно повторять [a-zA-Z] и [0-9], поэтому я сделал два новых определения

DIGIT    [0-9]
VALID    [a-zA-Z]

Как я могу переписать правило идентификатора, чтобы использовать ЦИФРУ и ДОПУСТИМЫЕ определения?

Я не знаю, как провести "второе" совпадение, я застрял здесь:

IDENTIFIER {VALID}[{VALID}{DIGIT}]* // This syntax is incorrect

Спасибо.

Редактировать:Вся тестовая программа, которую я использую: http://pastebin.com/f5b64183f.

Это было полезно?

Решение

Похоже, ты действительно хочешь:

ИДЕНТИФИКАТОР {ДЕЙСТВИТЕЛЬНЫЙ}({ДЕЙСТВИТЕЛЬНЫЙ}|{ЦИФРА})*

[{ДОПУСТИМАЯ}{ЦИФРА}] преобразуется в [[A-Za-z][0-9]], что не является допустимой конструкцией.

Другие советы

Я думаю, что это сработает, но я не могу это проверить.у вас есть образцы данных?

(?:[a-zA-Z])+(?:[0-9])+

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top