%{
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Function prototype
void digi(void);
%}
dig [0-9]+|([0-9]*)"."([0-9]+)
add \+
sub \-
mul \*
div /
pow \^
ln \n
%%
{dig} { digi(); }
{ln} { printf("\nThe result: %f\n\n", a); }
[\t ]+ { /* Ignore whitespace */ }
. { printf("Unrecognized input: %s\n", yytext); }
%%
void digi()
{
a
= atof
(yytext
); // Convert to
float else
{
b = atof(yytext);
{
case 1: a = a + b; break;
case 2: a = a - b; break;
case 3: a = a * b; break;
case 4:
if (b != 0)
a = a / b;
else
printf("Error: Division by zero!\n");
break;
case 5:
a = pow(a, b);
break;
}
}
}
int main(int argc, char *argv[])
{
yylex();
return 0;
}
int yywrap()
{
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KCmludCBvcCA9IDAsIGk7CmZsb2F0IGEsIGI7CgovLyBGdW5jdGlvbiBwcm90b3R5cGUKdm9pZCBkaWdpKHZvaWQpOwolfQoKZGlnICAgICBbMC05XSt8KFswLTldKikiLiIoWzAtOV0rKQphZGQgICAgIFwrCnN1YiAgICAgXC0KbXVsICAgICBcKgpkaXYgICAgIC8KcG93ICAgICBcXgpsbiAgICAgIFxuCiUlCgp7ZGlnfSAgIHsgZGlnaSgpOyB9Cgp7YWRkfSAgIHsgb3AgPSAxOyB9CntzdWJ9ICAgeyBvcCA9IDI7IH0Ke211bH0gICB7IG9wID0gMzsgfQp7ZGl2fSAgIHsgb3AgPSA0OyB9Cntwb3d9ICAgeyBvcCA9IDU7IH0KCntsbn0gICAgeyBwcmludGYoIlxuVGhlIHJlc3VsdDogJWZcblxuIiwgYSk7IH0KCltcdCBdKyAgeyAvKiBJZ25vcmUgd2hpdGVzcGFjZSAqLyB9CgouICAgICAgIHsgcHJpbnRmKCJVbnJlY29nbml6ZWQgaW5wdXQ6ICVzXG4iLCB5eXRleHQpOyB9CiUlCgp2b2lkIGRpZ2koKQp7CiAgICBpZiAob3AgPT0gMCkKICAgICAgICBhID0gYXRvZih5eXRleHQpOyAgLy8gQ29udmVydCB0byBmbG9hdAogICAgZWxzZQogICAgewogICAgICAgIGIgPSBhdG9mKHl5dGV4dCk7CiAgICAgICAgc3dpdGNoKG9wKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAxOiBhID0gYSArIGI7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6IGEgPSBhIC0gYjsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzogYSA9IGEgKiBiOyBicmVhazsKICAgICAgICAgICAgY2FzZSA0OiAKICAgICAgICAgICAgICAgIGlmIChiICE9IDApCiAgICAgICAgICAgICAgICAgICAgYSA9IGEgLyBiOyAKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yOiBEaXZpc2lvbiBieSB6ZXJvIVxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAKICAgICAgICAgICAgICAgIGEgPSBwb3coYSwgYik7IAogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIG9wID0gMDsKICAgIH0KfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgeXlsZXgoKTsKICAgIHJldHVybiAwOwp9CgppbnQgeXl3cmFwKCkKewogICAgcmV0dXJuIDE7Cn0KCg==