为什么我在 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]
开头(数字、字母 a
和 b
以及符号 (
和 [
)。下一个字符是不平衡的右括号,这是一个错误。
您可能被 Posix 字符 classes 的语法误导了。序列 [:
在字符 class 中是特殊的,但这不适用于 [
后跟 :
.
如评论中所述,这种误解肯定与文档中的错误有关,我将其报告为 issue 521。
我正在用词法分析器测试一些东西,并写了这个正则表达式规则:
[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]
开头(数字、字母 a
和 b
以及符号 (
和 [
)。下一个字符是不平衡的右括号,这是一个错误。
您可能被 Posix 字符 classes 的语法误导了。序列 [:
在字符 class 中是特殊的,但这不适用于 [
后跟 :
.
如评论中所述,这种误解肯定与文档中的错误有关,我将其报告为 issue 521。