Lex and Yacc Programs
Lex and Yacc Programs
int v=0,c=0;
%}
%%
[aeiouAEIOU] v++;
[a-zA-Z] c++;
%%
main()
yylex();
printf("VOWELS=%d\nCONSONANTS=%d\n",v,c);
int pi=0,ni=0,pf=0,nf=0;
%}
%%
\+?[0-9]+ pi++;
\+?[0-9]*\.[0-9]+ pf++;
\-[0-9]+ ni++;
\-[0-9]*\.[0-9]+ nf++;
%%
main()
{
printf("ENTER INPUT : ");
yylex();
#include "stdio.h"
int pf=0,sf=0;
%}
%%
printf {
pf++;
fprintf(yyout,"%s","writef");
scanf {
sf++;
fprintf(yyout,"%s","readf");
%%
main()
yyin=fopen("file1.l","r+");
yyout=fopen("file2.l","w+");
yylex();
printf("NUMBER OF PRINTF IS %d\n",pf);
}%
%%
"and"|
"or"|
"but"|
"because"|
. ;
\n return 0;
%%
main()
yylex();
printf("SIMPLE SENTANCE");
#include<stdio.h>
int id=0,flag=0;
%}
%%
"int"|"char"|"float"|"double" { flag=1; printf("%s",yytext); }
";" { flag=0;printf("%s",yytext); }
[0] return(0);
%%
main()
yyin=fopen("f1.l","r");
yylex();
fclose(yyin);
int yywrap()
return(1);
int c=0,w=0,l=0,s=0;
%}
%%
[\n] l++;
%%
if(argc==2)
yyin=fopen(argv[1],"r");
yylex();
printf("\nCHARACTER=%d",c);
printf("\nLINES=%d",l);
printf("\nWORD=%d\n",w);
else
printf("ERROR");
#include<stdio.h>
int cc=0;
%}
%%
%%
main()
{
yyin=fopen("f1.l","r");
yyout=fopen("f2.l","w");
yylex();
fclose(yyin);
fclose(yyout);
#include<stdio.h>
int opr=0,opd=0;
int n;
%}
%%
opr++;
opd++;
opd++;
[a-zA-Z]+\+\-\*\/[a-zA-Z]+ { n=0; }
[0-9]+\+\-\*\/[0-9]+ { n=0; }
%%
main()
{
printf("\nENTER THE EXPRESSION : \n");
yylex();
if((n==0)&&(opd==opr+1))
printf("\nVALID EXPRESSION\n");
else
printf("\nINVALID EXPRESSION\n");
#include<stdio.h>
int cons=0;
%}
%%
. ;
%%
if(argc==2)
yyin=fopen(argv[1],"r");
yylex();
else
printf("\nERROR");