#ifndef EXPRESSIONCONTAINER_HH_ #define EXPRESSIONCONTAINER_HH_ namespace AMDA { namespace parser { struct op_not {}; struct op_or {}; struct op_greater{}; struct op_greaterOrEqual{}; struct op_lowerOrEqual{}; struct op_lower{}; struct op_and {}; struct op_xor {}; struct op_equal {}; struct op_unequal {}; struct op_sum {}; struct op_difference {}; struct op_factor {}; struct op_division {}; struct op_power{}; struct op_powerTen{}; struct op_plusSign {}; struct op_minusSign {}; namespace Expression{ typedef std::string var; template struct binop; template struct unop; template struct comop; typedef boost::variant >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper >, boost::recursive_wrapper > > expressionContainer; template struct binop { explicit binop(const expressionContainer& l, const expressionContainer& r) : oper1(l), oper2(r) { } expressionContainer oper1, oper2; }; template struct comop { explicit comop(const expressionContainer& l, const expressionContainer& r) : oper1(l), oper2(r) { } expressionContainer oper1, oper2; }; template struct unop { explicit unop(const expressionContainer& o) : oper1(o) { } expressionContainer oper1; }; } /* namespace Expression */ } /* namespace parser */ } /* namespace AMDA */ #endif