AIM:
Program to count the number of characters, words, spaces and lines in a given input file.
DESCRIPTION:
We have the command 'wc' in UNIX which gives us all the number of characters,number of words,number of lines.We are expected to develop a similar utility which does the same using flex.
FLEX: flex - the fast lexical analyser generator.
CODE:
%{
#include<stdio.h>
int char_count=0,word_count=0,line_count=0,space_count=0;
%}
%%
[^ \t\n]+ {word_count++;char_count+=yyleng;}
\n {line_count++;char_count++;}
" " {space_count++;char_count++;}
. {char_count++;}
%%
int main(int argc,char *argv[])
{
if(argc>1)
{
FILE *file=fopen(argv[1],"r");
if(!file)
{
printf("Error opening %s\n",argv[1]);
exit(1);
}
yyin=file;
}
yylex();
printf("line count is %d\n",line_count);
printf("word count is %d\n",word_count);
printf("space count is %d\n",space_count);
printf("character count is %d\n",char_count);
return 0;
}
COMPILE:
lex 1a.l gcc lex.yy.c -ll ./a.out 1a.l
OUTPUT:
line count is 29 word count is 55 space count is 26 character count is 588