/*lex program to implement
- a simple calculator.*/
% {
% }
dig [0-9]+|([0-9]*)"."([0-9]+)
add "+"
sub "-"
mul "*"
div "/"
pow "^"
ln \n
%%
/* digi() is a user defined function */
{dig} {digi();}
{ln} {printf("\n The Answer :%f\n\n",a);}
%%
digi()
{
/* atof() is used to convert
- the ASCII input to float */
a=atof(yytext);
else
{
b=atof(yytext);
{
case 1:a=a+b;
break;
case 2:a=a-b;
break;
case 3:a=a*b;
break;
case 4:a=a/b;
break;
case 5:for(i=a;b>1;b--)
a=a*i;
break;
}
}
}
main(int argv,char *argc[])
{
yylex();
}
yywrap()
{
return 1;
}
LypsZXggcHJvZ3JhbSB0byBpbXBsZW1lbnQgCgkJLSBhIHNpbXBsZSBjYWxjdWxhdG9yLiovCgolIHsgCmludCBvcCA9IDAsaTsgCmZsb2F0IGEsIGI7IAolIH0gCgpkaWcgWzAtOV0rfChbMC05XSopIi4iKFswLTldKykgCmFkZCAiKyIKc3ViICItIgptdWwgIioiCmRpdiAiLyIKcG93ICJeIgpsbiBcbiAKJSUgCgovKiBkaWdpKCkgaXMgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24gKi8Ke2RpZ30ge2RpZ2koKTt9IAp7YWRkfSB7b3A9MTt9IAp7c3VifSB7b3A9Mjt9IAp7bXVsfSB7b3A9Mzt9IAp7ZGl2fSB7b3A9NDt9IAp7cG93fSB7b3A9NTt9IAp7bG59IHtwcmludGYoIlxuIFRoZSBBbnN3ZXIgOiVmXG5cbiIsYSk7fSAKCiUlIApkaWdpKCkgCnsgCmlmKG9wPT0wKSAKCi8qIGF0b2YoKSBpcyB1c2VkIHRvIGNvbnZlcnQgCgktIHRoZSBBU0NJSSBpbnB1dCB0byBmbG9hdCAqLwphPWF0b2YoeXl0ZXh0KTsgCgplbHNlCnsgCmI9YXRvZih5eXRleHQpOyAKCnN3aXRjaChvcCkgCnsgCmNhc2UgMTphPWErYjsgCglicmVhazsgCgpjYXNlIDI6YT1hLWI7IApicmVhazsgCgpjYXNlIDM6YT1hKmI7IApicmVhazsgCgpjYXNlIDQ6YT1hL2I7IApicmVhazsgCgpjYXNlIDU6Zm9yKGk9YTtiPjE7Yi0tKSAKYT1hKmk7IApicmVhazsgCn0gCm9wPTA7IAp9IAp9IAoKbWFpbihpbnQgYXJndixjaGFyICphcmdjW10pIAp7IAp5eWxleCgpOyAKfSAKCnl5d3JhcCgpIAp7IApyZXR1cm4gMTsgCn0gCg==