alpha [A-Za-z]
digit [0-9]
%%
[ \t\n]
if return IF;
then return THEN;
else return ELSE;
{digit}+ return NUM;
{alpha}({alpha}|{digit})* return ID;
"<=" return LE;
">=" return GE;
"==" return EQ;
"!=" return NE;
"||" return OR;
"&&" return AND;
. return yytext[0];
%%
%{
#include <stdio.h>
#include <stdlib.h>
%}
%token ID NUM IF THEN LE GE EQ NE OR AND ELSE
%right '='
%left AND OR
%left '<' '>' LE GE EQ NE
%left '+''-'
%left '*''/'
%right UMINUS
%left '!'
%%
S : ST {printf("Input accepted.\n");exit(0);};
ST : IF '(' E2 ')' THEN ST1';' ELSE ST1';'
| IF '(' E2 ')' THEN ST1';'
;
ST1 : ST
| E
;
E : ID'='E
| E'+'E
| E'-'E
| E'*'E
| E'/'E
| E'<'E
| E'>'E
| E LE E
| E GE E
| E EQ E
| E NE E
| E OR E
| E AND E
| ID
| NUM
;
E2 : E'<'E
| E'>'E
| E LE E
| E GE E
| E EQ E
| E NE E
| E OR E
| E AND E
| ID
| NUM
;
%%
main()
{
printf("Enter the exp: ");
yyparse();
}
YWxwaGEgW0EtWmEtel0KZGlnaXQgWzAtOV0KJSUKWyBcdFxuXSAgIAppZiAgICByZXR1cm4gSUY7CnRoZW4gICAgcmV0dXJuIFRIRU47CmVsc2UgICAgcmV0dXJuIEVMU0U7CntkaWdpdH0rICAgIHJldHVybiBOVU07CnthbHBoYX0oe2FscGhhfXx7ZGlnaXR9KSogICAgcmV0dXJuIElEOwoiPD0iICAgIHJldHVybiBMRTsKIj49IiAgICByZXR1cm4gR0U7CiI9PSIgICAgcmV0dXJuIEVROwoiIT0iICAgIHJldHVybiBORTsKInx8IiAgICByZXR1cm4gT1I7CiImJiIgICAgcmV0dXJuIEFORDsKLiAgICByZXR1cm4geXl0ZXh0WzBdOwolJQoKCiV7CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiV9CiV0b2tlbiBJRCBOVU0gSUYgVEhFTiBMRSBHRSBFUSBORSBPUiBBTkQgRUxTRQolcmlnaHQgJz0nCiVsZWZ0IEFORCBPUgolbGVmdCAnPCcgJz4nIExFIEdFIEVRIE5FCiVsZWZ0ICcrJyctJwolbGVmdCAnKicnLycKJXJpZ2h0IFVNSU5VUwolbGVmdCAnIScKJSUKClMgICAgICA6IFNUIHtwcmludGYoIklucHV0IGFjY2VwdGVkLlxuIik7ZXhpdCgwKTt9OwpTVCAgICA6IElGICcoJyBFMiAnKScgVEhFTiBTVDEnOycgRUxTRSBTVDEnOycKICAgICAgICB8IElGICcoJyBFMiAnKScgVEhFTiBTVDEnOycKICAgICAgICA7ClNUMSAgOiBTVAogICAgICAgIHwgRQogICAgICAgIDsKRSAgICA6IElEJz0nRQogICAgICB8IEUnKydFCiAgICAgIHwgRSctJ0UKICAgICAgfCBFJyonRQogICAgICB8IEUnLydFCiAgICAgIHwgRSc8J0UKICAgICAgfCBFJz4nRQogICAgICB8IEUgTEUgRQogICAgICB8IEUgR0UgRQogICAgICB8IEUgRVEgRQogICAgICB8IEUgTkUgRQogICAgICB8IEUgT1IgRQogICAgICB8IEUgQU5EIEUKICAgICAgfCBJRAogICAgICB8IE5VTQogICAgICA7CkUyICA6IEUnPCdFCiAgICAgIHwgRSc+J0UKICAgICAgfCBFIExFIEUKICAgICAgfCBFIEdFIEUKICAgICAgfCBFIEVRIEUKICAgICAgfCBFIE5FIEUKICAgICAgfCBFIE9SIEUKICAgICAgfCBFIEFORCBFCiAgICAgIHwgSUQKICAgICAgfCBOVU0KICAgICAgOwoKJSUKCgptYWluKCkKewogIHByaW50ZigiRW50ZXIgdGhlIGV4cDogIik7CiAgeXlwYXJzZSgpOwp9