%option noyywrap %option nounput %option noinput %{ #include #include #include #include "ast.hpp" using namespace std; #include "parser.tab.hpp" %} %% "if" return if_token; "then" return then_token; "else" return else_token; "extern" return extern_token; "def" return def_token; "for" return for_token; "in" return in_token; "var" return var_token; [a-zA-Z_][a-zA-Z0-9_]* { yylval.s = new string(yytext); return id_token; } [0-9]+(\.[0-9]*)? { yylval.d = atof(yytext); return num_token; } [-+*/(),;<>=:] return *yytext; [#].* { } [ \t\n] { } . { cerr << "Leksicka greska: neprepoznat karakter " << *yytext << endl; exit(EXIT_FAILURE); } %%