#ifndef __REGEX_HPP__ #define __REGEX_HPP__ 1 class RegEx { public: virtual void basic() const = 0; virtual ~RegEx() { } }; class Slovo : public RegEx { public: Slovo(char c) :_c(c) {} void basic() const; private: char _c; }; class BinOp : public RegEx { public: BinOp(RegEx *l, RegEx *d) :_levi(l), _desni(d) {} ~BinOp(); private: BinOp(const BinOp&); BinOp& operator=(const BinOp&); protected: RegEx *_levi, *_desni; }; class Konkatenacija : public BinOp { public: Konkatenacija(RegEx *l , RegEx *d) :BinOp(l, d) {} void basic() const; }; class Disjunkcija : public BinOp { public: Disjunkcija(RegEx *l , RegEx *d) :BinOp(l, d) {} void basic() const; }; class UnOp : public RegEx { public: UnOp(RegEx *r) :_r(r) {} ~UnOp(); private: UnOp(const UnOp&); UnOp& operator=(const UnOp&); protected: RegEx *_r; }; class Klini : public UnOp { public: Klini(RegEx *r) :UnOp(r) {} void basic() const; }; #endif