%option noyywrap %{ #include #include #define CEO_BROJ 1 #define REALAN_BROJ 2 %} %% [+-]?[0-9]+ { return CEO_BROJ; } [+-]?[0-9]+\.[0-9]+[eE][+-]?[0-9]+ { return REALAN_BROJ; } . {} \n {} %% int main(int argc, char **argv) { if (argc == 2) { yyin = fopen(argv[1], "r"); if (yyin == NULL) { printf("Nemoguce otvaranje fajla %s\n", argv[1]); exit(1); } } int token; while ((token = yylex()) != 0) { switch (token) { case CEO_BROJ: printf("Nadjena je celobrojna konstanta %d\n", atoi(yytext)); break; case REALAN_BROJ: printf("Nadjena je realna konstanta %f\n", atof(yytext)); break; } } fclose(yyin); return 0; }