我是使用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]+
它工作得很好。