public static MyError BadAttributeError(PyObj pyObj, IdentifierSegment identifierSegment) { return(new MyError(String.Format("El atributo: {0} no existe en el tipo: {1}", identifierSegment.Id, TypeConstants.GetMyTypeName(pyObj.GetMyType())) )); }
public static MyError OutOfBounds(PyObj pyObj, int index, int lowerBound, int upperBound) { return(new MyError(String.Format("Indice fuera de rango: {0}. rango esperado: [{1}-{2}]", index, lowerBound, upperBound) )); }
public static MyError BadProcedureError(PyObj pyObj, ProcedureSegment procedureSegment) { return(new MyError(String.Format("La funcion o metodo: {0} con: {1} argumentos no es una funcion o metodo valida para el tipo: {2}", procedureSegment.Id, procedureSegment.CountArguments, TypeConstants.GetMyTypeName(pyObj.GetMyType())) )); }
//Operaciones public virtual Word BinaryOperation(BinaryOperator op, PyObj obj0) { switch (op) { case BinaryOperator.Plus: return(Calculator.Plus(this, obj0)); case BinaryOperator.Minus: return(Calculator.Minus(this, obj0)); case BinaryOperator.Mult: return(Calculator.Mult(this, obj0)); case BinaryOperator.Div: return(Calculator.Div(this, obj0)); case BinaryOperator.Pow: return(Calculator.Pow(this, obj0)); case BinaryOperator.GreaterThan: return(Calculator.GreaterThan(this, obj0)); case BinaryOperator.LessThan: return(Calculator.LessThan(this, obj0)); case BinaryOperator.PyEquals: return(Calculator.PyEquals(this, obj0)); case BinaryOperator.PyNotEquals: return(Calculator.PyNotEquals(this, obj0)); case BinaryOperator.GreaterOrEqualTo: return(Calculator.GreaterOrEqualTo(this, obj0)); case BinaryOperator.LessOrEqualTo: return(Calculator.LessOrEqualTo(this, obj0)); case BinaryOperator.And: return(Calculator.And(this, obj0)); case BinaryOperator.Or: return(Calculator.Or(this, obj0)); case BinaryOperator.Xor: return(Calculator.Xor(this, obj0)); default: //TODO: Tirar una mejor exception, no una generica throw new Exception("Operador Binario no valido: " + op.ToString()); } }
public static MyError BadIndexError(PyObj pyObj, IndexSegment indexSegment) { var indexValue = indexSegment.Index; return(new MyError("El indice: " + indexValue.MyToString() + " (" + TypeConstants.GetMyTypeName(indexValue.GetMyType()) + ") no es un indice valido para el tipo: " + TypeConstants.GetMyTypeName(pyObj.GetMyType()) + " valor: " + pyObj.MyToString()));; }