регулярные выражения flex (лексический анализатор) - Повторное использование определений
-
05-07-2019 - |
Вопрос
У меня есть это рабочее определение:
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])+
Не связан с StackOverflow