按照上面的链接学习的
首先创建一个文件叫做1.l
ps.我是在linux系统下运行的,因为环境比较好装
%%
[0-9]+ printf("?");
# return 0;
. ECHO;
%%
int main(int argc, char* argv[]) {
yylex();
return 0;
}
int yywrap() {
return 1;
}
然后使用
flex 1.l
来进行编译,会生成lex.yy.c文件,然后用gcc
gcc lex.yy.c -o 1
生成可执行文件,然后
./1
就可以运行了
可以看出来,这段代码就是遇到数字就输出?,遇到#就退出,其他情况原样输出。
%{
#define T_WORD 1
int numChars = 0, numWords = 0, numLines = 0;
%}
WORD ([^ \t\n\r\a]+)
%%
\n { numLines++; numChars++; }
{WORD} { numWords++; numChars += yyleng; return T_WORD; }
<<EOF>> { return 0; }
. {