flex,前身是lex,lex是1975年由Mike Lesk和当时尚在AT&T实习的Eric Schmidt共同完成的基于UNIX环境的词法分析器的生成工具。这个lex很有名气,但是无奈效率太低加上有bug,让人用的很不爽。后来伯克利实验室的Vern Paxson用C重新写了lex,并命名为flex(Fast Lexical Analyzer Generator)。
下面是使用方法,流程图如上所示
①首先创建一个.l文件,里面写上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
%{ 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: %8d words: %8d chars: %8d\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