#pragma once

#include "expression.h"
#include "expptr.h"
#include "debug.h"

enum UOp { MINUS };

class UnaryExpression: public Expression
	{
		ExpPtr _exp;
		UOp _operation;
	public:
		UnaryExpression(UOp operation, const ExpPtr & exp) :Expression(false),_operation(operation), _exp(exp){};       
		double eval();
	};
	
double UnaryExpression:: eval()
	{
	*dout << '(' << "-u,";
	switch (_operation)
		{
		case MINUS: {_value = -(_exp->eval()); break;}
		}
	*dout << ')';
	_isEvaluated = true;
	return (_value);
	}