/*
 * BasicExpression.h
 *
 *  Created on: Dec 5, 2012
 *      Author: attero
 */

#ifndef BASICEXPRESSION_H_
#define BASICEXPRESSION_H_
#include "ASTExpression.h"
#include <iostream>

/**
 * BasicExpression is a very important class in my AST design. It always has
 * two children, which are actually left and right operands. Basic expression stores
 * a type of operation it does. It can be "+" or "-" for example.
 * Type of operator is very important when expression evaluates itself.
 *
 */
class BasicExpression : public ASTExpression {
public:

	virtual SenchaObject evaluate();
	virtual SenchaObject execute();

	std::string get_operator() { return oper; }
	virtual void accept(Visitor * visitor);

	BasicExpression(ASTNode * left, ASTNode * right, std::string oper);
	virtual ~BasicExpression();

private:
	std::string oper;
};

#endif /* BASICEXPRESSION_H_ */
