flex (лексический анализатор) регулярные выражения - повторное использование определений - PullRequest
1 голос
/ 07 октября 2008

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

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

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

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

Как переписать правило IDENTIFIER для использования определений DIGIT и VALID?

Я не знаю, как сделать «второй» матч, я застрял здесь:

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

Спасибо.

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

Ответы [ 2 ]

3 голосов
/ 07 октября 2008

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

ИДЕНТИФИКАТОР {VALID} ({VALID} | {DIGIT}) *

[{VALID} {DIGIT}] преобразуется в [[A-Za-z] [0-9]], что не является допустимым конструктом.

0 голосов
/ 07 октября 2008

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

(?: [A-Za-Z]) + (?: [0-9]) + * * 1003

...