我是刚接触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
?
答案 0 :(得分:0)
啊。看起来Flex的正则表达式版本不理解\ w和\ d。替换为
[A-Za-z][A-Za-z0-9]+
效果很好。