public static MyError ArrayDimensionError(AstNode node, Word indexWord)
            {
                string type;
                string value;

                if (indexWord.IsError())
                {
                    type  = indexWord.GetType().Name;
                    value = "";
                }
                else
                {
                    type  = TypeConstants.GetMyTypeName(((PyObj)indexWord).GetMyType());
                    value = ((PyObj)indexWord).MyToString();
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            "Indice no valido en declaracion de Array: " + type + " valor: " + value,
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
            public static MyError ArrayTypeError(AstNode node, int[] intIndices, Word word)
            {
                string type;
                string value;

                if (word.IsError())
                {
                    type  = word.GetType().Name;
                    value = "";
                }
                else
                {
                    type  = TypeConstants.GetMyTypeName(((PyObj)word).GetMyType());
                    value = ((PyObj)word).MyToString();
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            "No se le puede asignar a un array con las dimensiones: [ " + String.Join(", ", intIndices) + " ]. Un objeto tipo: " + type + " valor: " + value,
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
示例#3
0
 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()))
                        ));
 }
示例#4
0
 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()))
                        ));
 }
 public virtual MyError UnaryError(UnaryOperator op, PyObj obj0)
 {
     return(new MyError(string.Format("No se puede realizar la operacion unaria: {0} ({1}).  Con tipo: <{2}> y valor: <{3}>"
                                      , op.ToString()
                                      , op.ToStringSymbol()
                                      , TypeConstants.GetMyTypeName(obj0.GetMyType())
                                      , obj0.MyToString()
                                      )));
 }
 public virtual MyError BinaryError(PyObj obj0, BinaryOperator op, PyObj obj1)
 {
     return(new MyError(string.Format("No se puede realizar la operacion binaria: {0} ({1}).  Con tipos: <{2}, {3}> y valores: <{4}, {5}>"
                                      , op.ToString()
                                      , op.ToStringSymbol()
                                      , TypeConstants.GetMyTypeName(obj0.GetMyType())
                                      , TypeConstants.GetMyTypeName(obj1.GetMyType())
                                      , obj0.MyToString()
                                      , obj1.MyToString()
                                      )));
 }
            public static MyError ForConditionError(AstNode node, Word word)
            {
                string type;

                if (word.IsError())
                {
                    type = word.GetType().Name;
                }
                else
                {
                    type = TypeConstants.GetMyTypeName(((PyObj)word).GetMyType());
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            "Condicion del FOR no es valida. Tipo: " + type + " se esperaba: " + TypeConstants.GetMyTypeName(TypeConstants.BOOLEAN),
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
            public static MyError CantReturnError(AstNode node, Word word)
            {
                string type;

                if (word.IsError())
                {
                    type = word.GetType().Name;
                }
                else
                {
                    type = TypeConstants.GetMyTypeName(((PyObj)word).GetMyType());
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            "No se puede retornar un tipo: " + type + " se retorno null para poder continuar con la ejecucion",
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
            public static MyError IncDecError(AstNode node, IncDecOperator op, Word word)
            {
                string type;

                if (word.IsError())
                {
                    type = word.GetType().Name;
                }
                else
                {
                    type = TypeConstants.GetMyTypeName(((PyObj)word).GetMyType());
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            "No se puede hacer " + op.ToStringSymbol() + " con un tipo: " + type,
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
            public static MyError GraphError(AstNode node, string paramName, Word word)
            {
                string type;

                if (word.IsError())
                {
                    type = word.GetType().Name;
                }
                else
                {
                    type = TypeConstants.GetMyTypeName(((PyObj)word).GetMyType());
                }
                MyError error = new MyError(node.Span.Location.Line,
                                            node.Span.Location.Column,
                                            node.NodePath.StringValue,
                                            paramName + " de graph con un tipo: " + type,
                                            MyError.ErrorType.Semantic,
                                            MyError.ErrorLevel.Fatal);

                AddError(error);
                return(error);
            }
示例#11
0
            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()));;
            }