%{
#include <stdio.h>
#include <stdlib.h>
void yyerror(const char *s);
int yylex(void);
%}
%token INTEGER
%left '+' '-'
%left '*' '/'
%%
S:
E '\n' { printf("Accepted\n"); exit(0); }
;
E:
E '+' T { /* do nothing */ }
| E '-' T { /* do nothing */ }
| T
;
T:
T '*' F { /* do nothing */ }
| T '/' F { /* do nothing */ }
| F
;
F:
'(' E ')'
;
%%
void yyerror(const char *s) {
printf("%s - Invalid String\n", s);
exit(1);
}
int main() {
printf("Enter expression: ");
yyparse();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4Kdm9pZCB5eWVycm9yKGNvbnN0IGNoYXIgKnMpOwppbnQgeXlsZXgodm9pZCk7CiV9CgoldG9rZW4gSU5URUdFUgolbGVmdCAnKycgJy0nCiVsZWZ0ICcqJyAnLycKCiUlClM6CiAgICBFICdcbicgICB7IHByaW50ZigiQWNjZXB0ZWRcbiIpOyBleGl0KDApOyB9CiAgICA7CgpFOgogICAgRSAnKycgVCAgeyAvKiBkbyBub3RoaW5nICovIH0KICB8IEUgJy0nIFQgIHsgLyogZG8gbm90aGluZyAqLyB9CiAgfCBUCiAgOwoKVDoKICAgIFQgJyonIEYgIHsgLyogZG8gbm90aGluZyAqLyB9CiAgfCBUICcvJyBGICB7IC8qIGRvIG5vdGhpbmcgKi8gfQogIHwgRgogIDsKCkY6CiAgICAnKCcgRSAnKScgCiAgfCBJTlRFR0VSCiAgOwolJQoKdm9pZCB5eWVycm9yKGNvbnN0IGNoYXIgKnMpIHsKICAgIHByaW50ZigiJXMgLSBJbnZhbGlkIFN0cmluZ1xuIiwgcyk7CiAgICBleGl0KDEpOwp9CgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgZXhwcmVzc2lvbjogIik7CiAgICB5eXBhcnNlKCk7CiAgICByZXR1cm4gMDsKfQo=