本文共 1392 字,大约阅读时间需要 4 分钟。
要求:
1)每遇到你的学号,就输出你的名字,对于其他的串原样输出。 2)统计输入文件中字母的数目。 3)统计输入文件中数字的数目。 4)统计输入文件之中的行数 建议:接下来提到的文件和文件夹都放到桌面① 新建文本文档->重命名为dd.l->保存(dd可以改)
就像这样: ② 输入以下代码%{#include#include #define NUM 201612345int num_chars = 0;int num_ids=0;int num_lines=1;%}delim [ ]letter [A-Za-z]digit [0-9]number {digit}+id {letter}+%%\n {num_lines++;printf("\n");}{number} {int r=atoi(yytext);if(r==NUM) printf("夏天的鼻涕怪 "); else printf("%s ",yytext); num_ids++; }{delim} {printf(" ");}{id} {printf("%s ",yytext);num_chars+=yyleng;num_ids++;}%%main(){ yylex(); printf("\n# of ids = %d ,# of chars = %d ,# of lines = %d ",num_ids , num_chars,num_lines);}
③代码解释
新建一个文件夹->重命名为1->放入flex.exe
就像这样: 把刚才的dd.l也放进来,就像这样: 拖动dd.l到flex.exe,就像这样: 即可自动生成lex.yy.c新建文件夹->重命名为2->把刚才lex.yy.c和libfl.lib放入,就像这样:
双击文件夹2中的lex.yy.c,用vc打开 点击build: 选择是: 接下来关掉即可: 点击工程->设置->连接 在对象/库模块下面将光标移到最后,输入一个空格,再输入libfl.lib,就像这样: 确定即可,点击运行: 现在打开文件夹2,里面多了一个Debug文件夹,Debug文件夹里面已经生成了lex.yy.exe,就像这样:新建一个text文件,输入如下内容:
201612345 hello world
wo ai tian an men hello world i love 201612345
这里面是待分析的内容
将该文件重命名为12 将该文件放在文件夹2下的Debug文件夹中,就像这样:Win + R->输入cmd即可
输入Debug所在路径,就像这样: 接着输入 lex.yy.exe<12.txt,回车即可,输出如下: