%{ #include #include double akku = 0, eingabe = 0; char op = '+'; void operiere(); %} %option main DIGIT [0-9] %% -?{DIGIT}+(\.)?{DIGIT}* { eingabe = atof(yytext); operiere(); } -?{DIGIT}*\.{DIGIT}+ { eingabe = atof(yytext); operiere(); } "+" | "-" | "*" | "/" op = *yytext; c { akku = 0; op = '+'; } .|\n /* nixx */ %% void operiere() { double result = akku; switch(op){ case '+': result = akku+eingabe; printf(" => %g", result); break; case '-': result = akku-eingabe; printf(" => %g", result); break; case '*': result = akku*eingabe; printf(" => %g", result); break; case '/': result = akku/eingabe; printf(" => %g", result); break; } op = ' '; akku = result; }