Flex 没有正确解析变量名

Flex not parsing variable names properly

我刚开始使用 Flex。这是我的 lex 文件:

%{
    #include <stdio.h>
%}

%%

\w[\w\d]+    printf("WORD\n");
.            printf("OTHER\n");

%%

int main() {
    yylex();
    return 0;
}

然后我用

编译这个
flex lexfile.l && gcc lex.yy.c -ll

然而,运行

之后
echo "hello" | ./a.out

我明白了

UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN

为什么我得不到

WORD

?

啊。看起来 Flex 的正则表达式版本不理解 \w 和 \d。替换为

[A-Za-z][A-Za-z0-9]+

而且效果很好。