Определение шаблона в Flex - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу определить «KEYER» в flex, который является «KEY» в «[]».«КЛЮЧ» начинается с буквы и строки букв, цифр и следующих символов: «~ _ '? $. -».Я определяю:

keyChar         ([a-zA-z0-9~_'?$. \-])
letter          ([a-zA-Z])
key             ({letter}{keyChar}+)
keyer           ("["{key}"]") 

и:

<*>{keyer}        print("KEYER");

Каким-то образом ввод:

[keyer1] [keyer2] [keyer 3]

читается как один ключ, а не как три из них.что я сделал не так?

1 Ответ

0 голосов
/ 24 ноября 2018

Вы написали A-z вместо A-Z в шаблоне для keyChar.[A-z] включает символы от Z до a, которые включают скобки.

В целом, лучше избегать выражений диапазона, когда в этом нет необходимости.Я бы написал:

keyChar         ([[:alnum:]~_'?$. -])
key             ([[:alpha:]]{keyChar}+)
keyer           ("["{key}"]")
...