#regex #flex-lexer #lexical-analysis
Вопрос:
У меня есть это рабочее определение:
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.
Ответ №1:
Похоже, ты действительно хочешь:
IDENTIFIER {VALID}({VALID}|{DIGIT})*
[{VALID}{DIGIT}]
решения [[A-Za-z][0-9]]
, которые не являются юридической конструкцией.
Комментарии:
1. Отлично. Вы аккуратно перешли к делу, в отличие от меня, который предпринял три попытки. Поэтому я удалил свой довольно запутанный ответ. Извините, что не поднял голос, но я использовал все свои голоса на сегодня 🙁
2. @Дэвид Арно: Не стесняйтесь вернуться завтра и ответить на мой вопрос. 🙂
Ответ №2:
Я думаю, что это сработает, но я не могу это проверить. У вас есть примеры данных?
(?:[a-zA-Z]) (?:[0-9])