Flex无法正确解析变量名称

时间:2019-03-09 20:00:24

标签: flex-lexer

我是刚接触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

1 个答案:

答案 0 :(得分:0)

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

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

效果很好。