%{
#include "y.tab.h"
extern YYSTYPE yylval;
%}
%%
[0-9]+ {yylval=atoi(yytext); return NUM;}
[-+*/] {return yytext[0];}
. {return yytext[0];}
\\n {return 0;}
%%
yaac
%{
#include<stdio.h>
#include<stdlib.h>
void yyerror();
int yylex();
%}
%token NUM
%left '+' '-'
%left '*' '/'
%%
S: E { printf("Result is %d\\n", $1); return 0; };
E: E '+' E { $$ = $1 + $3; }
| E '-' E { $$ = $1 - $3; }
| E '*' E { $$ = $1 * $3; }
| E '/' E { if($3==0){ yyerror(); } else { $$ = $1 / $3; } }
| '(' E ')' { $$ = $2; }
| NUM { $$ = $1; }
| '-' NUM { $$ = -$2; }
;
%%
int main(){
printf("Enter an expression:\\n");
yyparse();
return 0;
}
void yyerror(){
printf("Invalid expression\\n");
exit(0);
}