Flex 没有正确解析变量名
Flex not parsing variable names properly
我刚开始使用 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]+
而且效果很好。
我刚开始使用 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]+
而且效果很好。