CALC.L
%{
#include<stdio.h>
#include<stdlib.h>
void yyerror(char *);
#include "y.tab.h"
int yylval;
%}
%%
[a-z] {yylval=*yytext='&'; return VARIABLE;}
[0-9]+ {yylval
=atoi
(yytext
); return
INTEGER;} CALC.Y
[\t] ;
%%
int yywrap(void)
{
return 1;
}
%token INTEGER VARIABLE
%left '+' '-'
%left '*' '/'
%{
int yylex(void);
void yyerror(char *);
int sym[26];
%}
%%
PROG:
PROG STMT '\n'
;
STMT: EXPR {printf("\n %d",$1);}
| VARIABLE '=' EXPR {sym[$1] = $3;}
;
| VARIABLE {$$ = sym[$1];}
| EXPR '+' EXPR {$$ = $1 + $3;}
| '(' EXPR ')' {$$ = $2;}
%%
void yyerror(char *s)
{
printf("\n %s",s);
return;
}
int main(void)
{
printf("\n Enter the Expression:");
yyparse();
return 0;
Q0FMQy5MIAoleyAKI2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnZvaWQgeXllcnJvcihjaGFyICopOwojaW5jbHVkZSAieS50YWIuaCIgCmludCB5eWx2YWw7IAolfSAKJSUgClthLXpdIHt5eWx2YWw9Knl5dGV4dD0nJic7IHJldHVybiBWQVJJQUJMRTt9IApbMC05XSsge3l5bHZhbD1hdG9pKHl5dGV4dCk7IHJldHVybiBJTlRFR0VSO30gCkNBTEMuWSAKW1x0XSA7IAolJSAKaW50IHl5d3JhcCh2b2lkKSAKeyAKcmV0dXJuIDE7IAp9IAoldG9rZW4gSU5URUdFUiBWQVJJQUJMRSAKJWxlZnQgJysnICctJyAKJWxlZnQgJyonICcvJyAKJXsgCmludCB5eWxleCh2b2lkKTsgCnZvaWQgeXllcnJvcihjaGFyICopOyAKaW50IHN5bVsyNl07IAolfSAKJSUgClBST0c6IApQUk9HIFNUTVQgJ1xuJyAKOyAKU1RNVDogRVhQUiB7cHJpbnRmKCJcbiAlZCIsJDEpO30gCnwgVkFSSUFCTEUgJz0nIEVYUFIge3N5bVskMV0gPSAkMzt9IAo7IApFWFBSOiBJTlRFR0VSIAp8IFZBUklBQkxFIHskJCA9IHN5bVskMV07fSAKfCBFWFBSICcrJyBFWFBSIHskJCA9ICQxICsgJDM7fSAKfCAnKCcgRVhQUiAnKScgeyQkID0gJDI7fSAKJSUKdm9pZCB5eWVycm9yKGNoYXIgKnMpIAp7IApwcmludGYoIlxuICVzIixzKTsgCnJldHVybjsgCn0gCmludCBtYWluKHZvaWQpIAp7IApwcmludGYoIlxuIEVudGVyIHRoZSBFeHByZXNzaW9uOiIpOyAKeXlwYXJzZSgpOyAKcmV0dXJuIDA7IAoK