#ifndef __NAREDBA_HPP__ #define __NAREDBA_HPP__ 1 #include #include #include "izraz.hpp" using namespace std; class Naredba { public: virtual void izvrsi() const = 0; virtual Naredba* kopija() const = 0; virtual ~Naredba() { } }; class IspisS : public Naredba { public: IspisS(string s) :_s(s) {} void izvrsi() const; Naredba* kopija() const; private: string _s; }; class IspisE : public Naredba { public: IspisE(Izraz *i) :_i(i->kopija()) {} void izvrsi() const; Naredba* kopija() const; ~IspisE(); IspisE(const IspisE&); IspisE& operator=(const IspisE&); private: Izraz *_i; }; class Blok : public Naredba { public: Blok(vector v) :_v(v) {} void izvrsi() const; Naredba* kopija() const; ~Blok(); Blok(const Blok&); Blok& operator=(const Blok&); private: vector _v; }; class Dodela : public Naredba { public: Dodela(string s, Izraz *i) :_ime(s), _i(i->kopija()) {} void izvrsi() const; Naredba* kopija() const; ~Dodela(); Dodela(const Dodela& x); Dodela& operator=(const Dodela& x); private: string _ime; Izraz *_i; }; #endif