public override IConvertible Evaluate(IEvaluateContext context) { switch (_operation) { case ExprTokenType.Minus: return(-_operand.EvaluateInt(context)); case ExprTokenType.NOT: return(!_operand.EvaluateBool(context)); } throw new Exception("Unexpected unary operation " + _operation); }