为什么我在 flex 中出现 "unbalanced parenthesis" 错误

Why I am getting "unbalanced parenthesis" error in flex

我正在用词法分析器测试一些东西,并写了这个正则表达式规则:
[0-9([a-b])[c-f]] ;

根据 this 文档,这相当于:
[0-9a-f()] ;

For example, the following character classes are all equivalent:
[[:alnum:]]
[[:alpha:][:digit:]]
[[:alpha:][0-9]]
[a-zA-Z0-9]

但这给我错误:

my_lexer.l:56: unbalanced parenthesis

令人惊讶的是,这条规则不会给出同样的错误!
[0-9([a-b][c-f]] ;

谁能告诉我哪里错了..我正在使用 win_flex v2.6.4

在一个字符class中,除\]-外,没有任何字符具有特殊意义。 (但见下文。)因此 [0-9([a-b])[c-f]] 以字符 class [0-9([a-b] 开头(数字、字母 ab 以及符号 ([)。下一个字符是不平衡的右括号,这是一个错误。

您可能被 Posix 字符 classes 的语法误导了。序列 [: 在字符 class 中是特殊的,但这不适用于 [ 后跟 :.

如评论中所述,这种误解肯定与文档中的错误有关,我将其报告为 issue 521