Conversion of arithmatic expression into postfix expression for given grammar

Grammars Are
E=E+T      E=T    T=T*F    T=F    F=NUM

// ( .y  File )

%{
#include<stdlib.h>
#include<stdio.h>
void yyerror(char *s);
%}
%token NUM
%%
E : E '+' T {printf("+");}
| T ;
T : T '*' F {printf("*");}
| F ;
F : NUM {printf("%d",yylval);};
%%
int main()
{
yyparse();
}
void yyerror(char *s)
{
fprintf(stdout,"\n%s",s);
}

// (.l File )

%{
#include<stdio.h>
#include<stdlib.h>
#include"y.tab.h"
extern int yylval;
%}
%%
[0-9]+ {yylval=atoi(yytext);return NUM;}
[ \t] {;}
\n return 0;
. return yytext[0];
%%

/* To Compile :-
1) yacc -d filename.y
2) lex filename.l
3) gcc lex.yy.c y.tab.c -ll
4) ./a.out
Enter Expression like:  1+2*3
*/

Leave a comment