Monthly Archives: February 2014

Pract 6: Write a Lex program to count no of: (a) +ve and –ve integers and (b) +ve and –ve fractions

%{
#include<stdio.h>
int posint=0, negint=0,posfraction=0, negfraction=0;
%}
%%
[-][0-9]+ {negint++;}
[+]?[0-9]+ {posint++;}
[+]?[0-9]*\.[0-9]+ {posfraction++;}
[-][0-9]*\.[0-9]+ {negfraction++;}
%%
int yywrap()
{
return 1;
}

main(int argc, char *argv[])
{
if(argc!=2)
{
printf(“Usage: <./a.out> <sourcefile>\n”);
exit(0);
}
yyin=fopen(argv[1],”r”);
yylex();
printf(“No of +ve integers=%d\n No of –ve integers=%d\n No of +ve fractions=%d\n No of –ve fractions=%d\n”, posint, negint, posfraction, negfraction);
}

Pract 5: Write a Lex program to count the number of characters, words, spaces, end of lines in a given input file.

%{

#include<stdio.h>

int c=0, w=0, s=0, l=0;

%}

WORD  [^   \t\n,\.:]+

EOL  [\n]

BLANK  [  ]

%%

{WORD} {w++; c=c+yyleng;}

{BLANK} {s++;}

{EOL} {l++;}

.  {c++;}

%%

int yywrap()

{

return 1;

}

main(int argc, char *argv[])

{

if(argc!=2)

{

printf(“Usage: <./a.out> <sourcefile>\n”);

exit(0);

}

yyin=fopen(argv[1],”r”);

yylex();

printf(“No of characters=%d\nNo of words=%d\nNo of spaces=%d\n No of lines=%d\n”,c,w,s,l);

}