private Value Negation(NegationNode exp) { Value val = Eval(exp.InnerNode); Constant obj = val.GetRValue(); switch (obj.ConstantType) { case Constant.Type.Complex: return(ComplexValue.OpNeg((ComplexValue)obj)); case Constant.Type.Int: return(IntValue.OpNeg((IntValue)obj)); case Constant.Type.Float: return(FloatValue.OpNeg((FloatValue)obj)); } throw new ModelInterpreterException($"Отрицание не определено для типа \"{obj.ConstantType.ToString()}\"") { Line = exp.Line, Position = exp.Position }; }