代码之家  ›  专栏  ›  技术社区  ›  Daniel Walker

Flex无法正确分析变量名

  •  0
  • Daniel Walker  · 技术社区  · 7 年前

    我刚开始用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 回复  |  直到 7 年前
        1
  •  0
  •   Daniel Walker    7 年前

    啊。似乎Flex的regex版本不理解\w和\d。替换为

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

    而且效果很好。

    推荐文章