在 Flex 中定义模板
Defining a Template in Flex
我想在flex中定义一个"KEYER",也就是“[]”中的一个"KEY"。一个"KEY"是以一个字母和一串字母、数字和后面的字符开头:“~_'?$.-”。
我定义:
keyChar ([a-zA-z0-9~_'?$. \-])
letter ([a-zA-Z])
key ({letter}{keyChar}+)
keyer ("["{key}"]")
和:
<*>{keyer} print("KEYER");
不知何故输入:
[keyer1] [keyer2] [keyer 3]
读作一个 KEYER 而不是三个。我做错了什么?
您在 keyChar
的模式中写了 A-z
而不是 A-Z
。 [A-z]
包括 Z
和 a
之间的字符,其中包括方括号。
总的来说,在不必要的时候最好避免使用范围表达式。我会写:
keyChar ([[:alnum:]~_'?$. -])
key ([[:alpha:]]{keyChar}+)
keyer ("["{key}"]")
我想在flex中定义一个"KEYER",也就是“[]”中的一个"KEY"。一个"KEY"是以一个字母和一串字母、数字和后面的字符开头:“~_'?$.-”。 我定义:
keyChar ([a-zA-z0-9~_'?$. \-])
letter ([a-zA-Z])
key ({letter}{keyChar}+)
keyer ("["{key}"]")
和:
<*>{keyer} print("KEYER");
不知何故输入:
[keyer1] [keyer2] [keyer 3]
读作一个 KEYER 而不是三个。我做错了什么?
您在 keyChar
的模式中写了 A-z
而不是 A-Z
。 [A-z]
包括 Z
和 a
之间的字符,其中包括方括号。
总的来说,在不必要的时候最好避免使用范围表达式。我会写:
keyChar ([[:alnum:]~_'?$. -])
key ([[:alpha:]]{keyChar}+)
keyer ("["{key}"]")