%option noyywrap %option nounput %{ #include #include #include using namespace std; #include "izraz.hpp" #include "naredba.hpp" #include "parser.tab.hpp" %} %% "pocetak" return pocetak_token; "ispisi" return ispisi_token; "kraj" return kraj_token; "mod" return mod_token; "unesi" return unesi_token; "ako_je" return ako_je_token; "onda" return onda_token; "inace" return inace_token; "dok_je" return dok_je_token; "radi_sledece" return radi_sledece_token; [a-z_][a-z0-9]* { for (unsigned i = 0; i < strlen(yytext); i++) yytext[i] = tolower(yytext[i]); yylval.s = new string(yytext); return id_token; } [0-9]+ { yylval.i = atoi(yytext); return broj_token; } 0x[0-9a-fA-F]+ { yylval.i = (int)strtol(yytext, NULL, 16); return broj_token; } ["](\\["]|[^"])*["] { string tmp(yytext+1); tmp = tmp.substr(0, tmp.size()-1); yylval.s = new string(tmp); return string_token; } [-<>/.;()+*:=] return *yytext; [ \t\n] { } . { cerr << "Leksicka greska: nepoznat karakter '" << yytext << "'" << endl; exit(EXIT_FAILURE); } %%