Skip to main content

Posts

YACC Program to evaluate the arithmetic expression and check validation and print the result

arithmetic.l //lex program /* declaration section in this sections we will decleared the different value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> #include "y.tab.h" extern int yylval; %} /* this sections is known as defined section in which we defined the rule and regulation of regular expression which will be going to accept or not */ %% [0-9]+ {           yylval=atoi(yytext);           return NUMBER;        } [\t] ; [\n] return 0; . return yytext[0]; %% int yywrap() { return 1; } arithmatic.y /* yacc program for soving arithmatic expression */ /* decleration section in this sections we will decleared the different  value and include the header file which we are using in this program to run this program */ %{     #include<stdio.h>     int flag=0;   ...
Recent posts

YACC Program to check whether the arithmetic expression is valid or not

validexp.l //LEX Program /* declaration section in this sections we will declare the different value and include the header file which we are using in this program to run this program */ %{ #include"y.tab.h" extern yylval; %} /* defined section */ %% [0-9]+ {yylval=atoi(yytext); return NUMBER;}    //this is send to the yacc code as token INTEGER [a-zA-Z]+ {return ID;}                                          //this is send to the yacc code as token  ID [\t]+ ; \n {return 0;} . {return yytext[0];} %%    validexp.y  //yacc program //decelration section %{ #include<stdio.h> %} //definition section %token NUMBER ID                        // token from lex file %left '+' '-'                    ...

LEX to count the no of "scanf" and "printf" statement in a c program. Replace them with "writf" and "readf" respectively.

/* declaration section in this sections we will declare the different value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> int sf=0,pf=0; %} /* defined section */ %% "scanf" { sf++; fprintf(yyout,"readf");}            // replace scanf  with readf "printf" { pf++; fprintf(yyout,"writef");}            // replace printf  with writef %% int main() { yyin=fopen("open.c","r");                            // input file open.c yyout=fopen("new.c","w");                            // output file new.c with replace  yylex();      //no of printf and scanf in the file printf("Number of scanfs=%d\nNumber of Printf's=%d\n",sf,pf); return 0; } download the file  ...

LEX program to identify the number is Even or Odd.

/* declaration section in this sections we will declare the different value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> #include<stdlib.h> int i; %} /* defined section */ %% [0-9]+ {i=atoi(yytext); if(i%2==0) printf("Even !"); else printf("Odd !");} %% int main() { yylex(); } download the program file How to run this program            save the file as "even_odd.l"           open terminal  and run    "   flex  even_odd.l  "           it generates c file run      "  cc lex.yy.c -o evenodd  -ll   "  as out put  in file count           now run   for output       "  ./evenodd "          

No of comments lines in the c file and eliminate them and save into other file

%{ #include<stdio.h> int count=0; %} %% "/*"[^\n]+"*/" {count++;fprintf(yyout,"");} "//".* { count++; fprintf(yyout,"");} %% int main() { yyin=fopen("open.c","r"); yyout=fopen("new.c","w"); yylex(); printf("Number of Comments=%d\n",count);         return 0; } download the program file How to run this file 1. run lex file  using command " flex filename.l " 2.  it generate the  c file which can be execute by command " cc  lex.yy.c -ll " 3. it will generate the executable file " ./a.out "

lex program to count the number of fraction Positive and negative integer

/* decleration section in this sections we will decleared the different  value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> int pf_count=0; int nf_count=0; %} /* this sections is known as defined section in which we defined the rule and regulation of regular expression which will going to accept or not */ %% [+]?([0-9])+(\.([0-9])+)? { /* this is for fraction as eg: 2.03, +1 ,+0.3*/ pf_count++; printf("Positive fraction Integer:%s\n",yytext);} [-]([0-9])+(\.([0-9]+))?   { /* this will accept the negative fraction as eg: -3.3,-6 */ nf_count++; printf("Negative  fraction Integer:%s\n",yytext);} %% /* main function for calling the function */ void main(int argc[],char *argv[]) { yylex(); printf("the total number of Postive Integer are: %d\n" ,pf_count); printf("the total number of Negative  Integer are:%d\n",nf_count); }             ...

lex program to count the number of Positive and negative integer

/* decleration section in this sections we will decleared the different  value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> int p_count=0; int n_count=0; %} /* this sections is known as defined section in which we defined the rule and regulation of regular expression which will going to accept or not */ %% [+]?([0-9])+  { /* this is for increment and print the positive integer eg: 96, +36 */ p_count++; printf("Positive Integer:%s\n",yytext);} [-]([0-9])+   { /* this is for increment and print the negative integer eg: -96, -36 */ n_count++; printf("negative Integer:%s\n",yytext);} %% /* main function for calling the function */ void main(int argc[],char *argv[]) { yylex(); printf("the total number of Postive Integer are: %d\n" ,p_count); printf("the total number of Negative  Integer are:%d\n",n_count); }                ...