#include "izraz.hpp" BinOp::BinOp(const BinOp& x) { _levi = x._levi->kopija(); _desni = x._desni->kopija(); } BinOp::~BinOp() { delete _levi; delete _desni; } BinOp& BinOp::operator=(const BinOp& x) { if (this != &x) { delete _levi; delete _desni; _levi = x._levi->kopija(); _desni = x._desni->kopija(); } return *this; } Izraz* Konstanta::kopija() const { return new Konstanta(*this); } Izraz* Zbir::kopija() const { return new Zbir(*this); } Izraz* Razlika::kopija() const { return new Razlika(*this); } Izraz* Proizvod::kopija() const { return new Proizvod(*this); } Izraz* Kolicnik::kopija() const { return new Kolicnik(*this); } Izraz* Mod::kopija() const { return new Mod(*this); } Izraz* Promenljiva::kopija() const { return new Promenljiva(*this); } int Konstanta::vrednost() const { return _vr; } int Zbir::vrednost() const { return _levi->vrednost() + _desni->vrednost(); } int Razlika::vrednost() const { return _levi->vrednost() - _desni->vrednost(); } int Proizvod::vrednost() const { return _levi->vrednost() * _desni->vrednost(); } int Kolicnik::vrednost() const { return _levi->vrednost() / _desni->vrednost(); } int Mod::vrednost() const { return _levi->vrednost() % _desni->vrednost(); } map tablica_simbola; int Promenljiva::vrednost() const { return tablica_simbola[_ime]; }