flex,前身是lex,lex是1975年由Mike Lesk和当时尚在AT&T实习的Eric Schmidt共同完成的基于UNIX环境的词法分析器的生成工具。这个lex很有名气,但是无奈效率太低加上有bug,让人用的很不爽。后来伯克利实验室的Vern Paxson用C重新写了lex,并命名为flex(Fast Lexical Analyzer Generator)。
下面是使用方法,流程图如上所示
①首先创建一个.l文件,里面写上
代码语言:javascript复制
%{
int chars = 0;
int words = 0;
int lines = 0;
%}
%%
[a-zA-Z] {words ; chars = strlen(yytext);}
n { chars ; lines ; }
. { chars ; }
%%
int main(int argc, char **argv){
yylex();
printf("lines: � words: � chars: �n", lines, words, chars);
}
②接下来打开终端
输入一下命令:
flex test.l //生成一个就叫做 “lex.yy.c”的文件
③输入以下命令,生成a.out文件来读取输入输出
/* this action would generate a file named a.out which would be used for reading inputs and print outputs */ cc lex.yy.c -ll //参数-ll为mac上运行,如果不好用(Linux上运行),试试参数-lfl
④执行a.out
命令行中输入./a.out
输入一些字符,按下ctrl D退出。
最后会出现lines、words、chars的个数。
参考资料:https://blog.csdn.net/u013225150/article/details/51241256
http://www.itdaan.com/keywords/Flex Bison Using flex on OSX 在mac上使用Flex.html