%{ #include #include #include #include "funkcije.hpp" #include using namespace std; extern int yylex(); void yyerror(string s) { cerr << s << endl; exit(EXIT_FAILURE); } map tablica; %} %union { Funkcija *f; double d; char c; } %token function_token sin_token cos_token %token id_token %token num_token %type E %left '+' '-' %left '*' '/' %nonassoc '\'' %% Program: Program Naredba '\n' | Naredba '\n' ; Naredba: function_token id_token '=' '"' E '"' { map::iterator i = tablica.find($2); if (i != tablica.end()) delete i->second; tablica[$2] = $5; } | id_token { map::iterator i = tablica.find($1); if (i == tablica.end()) yyerror("Nedefinisana fja"); i->second->ispisi(); cout << endl; } | id_token '\'' { map::iterator i = tablica.find($1); if (i == tablica.end()) yyerror("Nedefinisana fja"); Funkcija* izvod = i->second->izvod(); izvod->ispisi(); cout << endl; delete izvod; } | id_token '[' num_token ']' { map::iterator i = tablica.find($1); if (i == tablica.end()) yyerror("Nedefinisana fja"); cout << i->second->vrednost($3)<izvod(); //TODO: dodati metod kopija u izvodu za proizvod, kolicnik, sin i cos //delete $1; } ; %% int main(int argc, char **argv) { yyparse(); //TODO: dodati metod kopija //for (map::iterator i = tablica.begin(); i != tablica.end(); i++) // delete i->second; return 0; }