以下程序是flex与bison教程中的程序
%option noyywrap
%{
int chars=0;
int words=0;
int lines=0;
%}
%%
[a-zA-z]+ {words++; chars+=strlen(yytext);}
\n {chars++; lines++;}
. {chars++;}
%%
main(int argc,char **argv)
{
if (argc>1)
{
if (!(yyin=fopen(argv[1],"r"))) //fopen()函数用于打开文件,“r”表示以只读方式开,//argv[1] 表示输入的文件名
{
perror(argv[1]); //打不开文件argv[1],会输出提示错误信息No such file or directory
return (1); //return 0 代表程序正常退出,return 1代表程序异常退出
}
}
yylex();
printf("%8d%8d%8d\n",lines,words,chars);
}
wc.l是程序文件名
在DOS命令窗口输入:
C:\Users\ASUS\Desktop\FBcode\wordcount>flex wc.l1.flex wc.l (生成lex.yy.c)
C:\Users\ASUS\Desktop\FBcode\wordcount>gcc -g -Wall -o output lex.yy.c (生成output.exe)
在wordcount文件夹下新建了text.txt文件,里面输入几行英文句子(注意最后一行要有回车键,不然会影响lines的输出结果)
运行&#