Flex无法正确解析变量名称

问题描述 投票:0回答:1

我是使用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-lexer
1个回答
0
投票

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

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

它工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.