%option noyywrap
%{
#include<stdio.h>
#include<stdlib.h>
int num1 = 0, num2 = 0;
%}
%%
[0-9]+ {
if(num1 == 0)
num1 = atoi(yytext);
else
num2 = atoi(yytext);
}
[\+\-\*/] {
}
\n {
{
case '+':
printf("Result = %d\n", num1 + num2);
break;
case '-':
printf("Result = %d\n", num1 - num2);
break;
case '*':
printf("Result = %d\n", num1 * num2);
break;
case '/':
if(num2 == 0)
printf("Division by zero error\n");
else
printf("Result = %d\n", num1 / num2);
break;
default:
printf("Invalid operator\n");
}
num1 = num2 = 0;
}
[ \t] ;
. {
printf("Invalid character\n");
}
%%
int main()
{
printf("Enter expression (Example: 10+20):\n");
yylex();
return 0;
}
JW9wdGlvbiBub3l5d3JhcAoKJXsKI2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgppbnQgbnVtMSA9IDAsIG51bTIgPSAwOwpjaGFyIG9wOwolfQoKJSUKWzAtOV0rICAgIHsKICAgICAgICAgICAgICBpZihudW0xID09IDApCiAgICAgICAgICAgICAgICAgIG51bTEgPSBhdG9pKHl5dGV4dCk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICBudW0yID0gYXRvaSh5eXRleHQpOwogICAgICAgICAgfQoKW1wrXC1cKi9dIHsKICAgICAgICAgICAgICBvcCA9IHl5dGV4dFswXTsKICAgICAgICAgIH0KClxuICAgICAgICB7CiAgICAgICAgICAgICAgc3dpdGNoKG9wKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlc3VsdCA9ICVkXG4iLCBudW0xICsgbnVtMik7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQgPSAlZFxuIiwgbnVtMSAtIG51bTIpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICBjYXNlICcqJzoKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVzdWx0ID0gJWRcbiIsIG51bTEgKiBudW0yKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgICBpZihudW0yID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJEaXZpc2lvbiBieSB6ZXJvIGVycm9yXG4iKTsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlc3VsdCA9ICVkXG4iLCBudW0xIC8gbnVtMik7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIkludmFsaWQgb3BlcmF0b3JcbiIpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgbnVtMSA9IG51bTIgPSAwOwogICAgICAgICAgfQoKWyBcdF0gICAgIDsKCi4gICAgICAgICAgewogICAgICAgICAgICAgIHByaW50ZigiSW52YWxpZCBjaGFyYWN0ZXJcbiIpOwogICAgICAgICAgIH0KJSUKCmludCBtYWluKCkKewogICAgcHJpbnRmKCJFbnRlciBleHByZXNzaW9uIChFeGFtcGxlOiAxMCsyMCk6XG4iKTsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQ==