%{ #include #include double zahl1 = 0, zahl2 = 0; enum op_t {plus, minus, mal, durch, clear } operator = clear; %} %option main DIGIT [0-9] /* OPERATOR [+,-,*,/,=]*/ %% {DIGIT}+(.)?{DIGIT}* { printf("Eine Ganze Zahl: '%s' (%g)\n", yytext, atof(yytext)); zahl2 = atof(yytext); switch (operator){ case plus: zahl1 = zahl1 + zahl2; break; case minus: zahl1 = zahl1 - zahl2; break; case mal: zahl1 = zahl1 * zahl2; break; case durch: zahl1 = zahl1 / zahl2; break; } printf ("Zwischenergebnis %g", zahl1); } "+" { operator = plus;} "-" { operator = minus; } "*" { operator = mal; } "/" { operator = durch;} %%