Compilation 在Flex中定义模板

Compilation 在Flex中定义模板,compilation,flex-lexer,lexical-analysis,lexical,Compilation,Flex Lexer,Lexical Analysis,Lexical,我想在flex中定义一个“键控器”,它是“[]”中的一个“键”。“键”以字母和一串字母、数字以及以下字符开头:“~~'?$.-”。 我定义: keyChar ([a-zA-z0-9~_'?$. \-]) letter ([a-zA-Z]) key ({letter}{keyChar}+) keyer ("["{key}"]") 以及: 被解读为一个键控器,而不是三个键控器。我做错了什么?您在keyChar的模式中编

我想在flex中定义一个“键控器”,它是“[]”中的一个“键”。“键”以字母和一串字母、数字以及以下字符开头:“~~'?$.-”。 我定义:

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


被解读为一个键控器,而不是三个键控器。我做错了什么?

您在
keyChar
的模式中编写了
A-z
,而不是
A-z
[A-z]
包括
z
A
之间的字符,包括括号

总的来说,在没有必要时最好避免使用范围表达式。我会写:

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

您在
keyChar
的模式中编写了
A-z
而不是
A-z
[A-z]
包括
z
A
之间的字符,包括括号

总的来说,在没有必要时最好避免使用范围表达式。我会写:

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