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);
            }
示例#2
0
        public ValueDialog(TypeConstants type)
        {
            //
            // Required for Windows Form Designer support
            //
            _typeProp = new TypeProp[]
            {
                new TypeProp(TypeConstants.ScaleFactor, DemosGlobalization.GetResxString(GetType(), "Resx_ScaleFactorPercent"), DemosGlobalization.GetResxString(GetType(), "Resx_ScaleFactor"), 0, true, 1, 1000, 1),
                new TypeProp(TypeConstants.PaintIntensity, DemosGlobalization.GetResxString(GetType(), "Resx_PaintIntensity"), DemosGlobalization.GetResxString(GetType(), "Resx_PaintIntensity"), 0, true, -100, 100, 10),
                new TypeProp(TypeConstants.PaintContrast, DemosGlobalization.GetResxString(GetType(), "Resx_PaintContrast"), DemosGlobalization.GetResxString(GetType(), "Resx_PaintContrast"), 0, true, -100, 100, 10),
                new TypeProp(TypeConstants.PaintGamma, DemosGlobalization.GetResxString(GetType(), "Resx_PaintGamma"), DemosGlobalization.GetResxString(GetType(), "Resx_PaintGamma"), 0, true, 10, 500, 1),
                new TypeProp(TypeConstants.AutoCrop, DemosGlobalization.GetResxString(GetType(), "Resx_AutoCrop"), DemosGlobalization.GetResxString(GetType(), "Resx_Threshold"), 0, true, 0, 244, 1),
                new TypeProp(TypeConstants.Average, DemosGlobalization.GetResxString(GetType(), "Resx_Average"), DemosGlobalization.GetResxString(GetType(), "Resx_Dimension"), 3, false, 3, 255, 1),
                new TypeProp(TypeConstants.Gaussian, DemosGlobalization.GetResxString(GetType(), "Resx_Gaussian"), DemosGlobalization.GetResxString(GetType(), "Resx_Radius"), 0, false, 1, 1000, 1),
                new TypeProp(TypeConstants.Median, DemosGlobalization.GetResxString(GetType(), "Resx_Median"), DemosGlobalization.GetResxString(GetType(), "Resx_Dimension"), 2, false, 2, 64, 1),
                new TypeProp(TypeConstants.Mosaic, DemosGlobalization.GetResxString(GetType(), "Resx_Mosac"), DemosGlobalization.GetResxString(GetType(), "Resx_Dimension"), 2, false, 2, 64, 1),
                new TypeProp(TypeConstants.Oilify, DemosGlobalization.GetResxString(GetType(), "Resx_Oilify"), DemosGlobalization.GetResxString(GetType(), "Resx_Dimension"), 2, false, 2, 255, 1),
                new TypeProp(TypeConstants.Posterize, DemosGlobalization.GetResxString(GetType(), "Resx_Posterize"), DemosGlobalization.GetResxString(GetType(), "Resx_Levels"), 2, false, 2, 64, 1),
                new TypeProp(TypeConstants.Sharpen, DemosGlobalization.GetResxString(GetType(), "Resx_Sharpen"), DemosGlobalization.GetResxString(GetType(), "Resx_Sharpness"), 0, false, -100, 100, 10),
                new TypeProp(TypeConstants.Min, DemosGlobalization.GetResxString(GetType(), "Resx_MinFilter"), DemosGlobalization.GetResxString(GetType(), "Resx_SampleSize"), 1, false, 1, 32, 1),
                new TypeProp(TypeConstants.Max, DemosGlobalization.GetResxString(GetType(), "Resx_MaxFilter"), DemosGlobalization.GetResxString(GetType(), "Resx_SampleSize"), 1, false, 1, 32, 1),
                new TypeProp(TypeConstants.HistoContrast, DemosGlobalization.GetResxString(GetType(), "Resx_HistoContrast"), DemosGlobalization.GetResxString(GetType(), "Resx_Contrast"), 0, false, -100, 100, 10),
                new TypeProp(TypeConstants.Hue, DemosGlobalization.GetResxString(GetType(), "Resx_Hue"), DemosGlobalization.GetResxString(GetType(), "Resx_Angle"), 0, false, -360, 360, 1),
                new TypeProp(TypeConstants.Solarize, DemosGlobalization.GetResxString(GetType(), "Resx_Solarize"), DemosGlobalization.GetResxString(GetType(), "Resx_Threshold"), 0, false, 0, 255, 1),
                new TypeProp(TypeConstants.Temperature, DemosGlobalization.GetResxString(GetType(), "Resx_Temperature"), DemosGlobalization.GetResxString(GetType(), "Resx_Threshold"), 0, false, -1000, 1000, 1)
            };
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            _type = type;
        }
示例#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()))
                        ));
 }
            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);
            }
示例#5
0
        public async Task <ResponseViewModel> CreateResponse(NewResponseViewModel response, ObjectId formId)
        {
            FormObjectViewModel form = await GetForm(formId);

            List <FieldViewModel> fields = form.fields;

            if (fields.Count != response.responseValues.Count)
            {
                throw new Exception("Responses do not match fields");
            }

            bool fieldsValid = ResponseUtils.ResponseValidator(new List <FieldViewModel>(fields),
                                                               new List <NewResponseValuesViewModel>(response.responseValues));

            if (!fieldsValid)
            {
                throw new Exception("Responses do not match fields");
            }

            List <ResponseValueViewModel> responseValues = new List <ResponseValueViewModel>();

            foreach (var responseValue in response.responseValues)
            {
                if (!TypeConstants.IsValidFieldType(responseValue.responseType))
                {
                    throw new Exception("Invalid Response Type");
                }

                ResponseValueViewModel responseValueViewModel = new ResponseValueViewModel
                {
                    Id           = ObjectId.GenerateNewId(),
                    responseType = responseValue.responseType,
                    value        = responseValue.value,
                    index        = responseValue.index,
                    fieldId      = ObjectId.Parse(responseValue.fieldId)
                };

                string responseType = responseValue.responseType;
                if (responseType == TypeConstants.CHECKBOX_INPUT)
                {
                    var values = Constants.ConvertJsonObject(responseValue.value);
                    responseValueViewModel.value = values;
                }

                responseValues.Add(responseValueViewModel);
            }

            ResponseViewModel responseViewModel = new ResponseViewModel
            {
                Id             = ObjectId.GenerateNewId(),
                createdBy      = response.createdBy,
                createdAt      = DateTime.UtcNow,
                formId         = formId,
                responseValues = responseValues
            };

            await responseCollection.InsertOneAsync(responseViewModel);

            return(responseViewModel);
        }
示例#6
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()))
                        ));
 }
示例#7
0
 public TypeProp(TypeConstants type, string captionName, string valueName, int min, int max)
 {
     Type        = type;
     CaptionName = captionName;
     ValueName   = valueName;
     Min         = min;
     Max         = max;
 }
示例#8
0
        public async Task <FormObjectViewModel> CreateForm(NewFormViewModel form)
        {
            ObjectId formId = ObjectId.GenerateNewId();
            List <FieldViewModel> fields = new List <FieldViewModel>();

            foreach (var field in form.fields)
            {
                string fieldType = field.fieldType;
                if (!TypeConstants.IsValidFieldType(fieldType))
                {
                    throw new Exception("Invalid Field Type");
                }

                FieldViewModel fieldViewModel = new FieldViewModel
                {
                    Id        = ObjectId.GenerateNewId(),
                    formId    = formId,
                    fieldType = field.fieldType,
                    index     = field.index,
                    title     = field.title,
                    createdAt = DateTime.UtcNow
                };

                if (fieldType == TypeConstants.CHECKBOX_INPUT || fieldType == TypeConstants.DROP_DOWN_INPUT ||
                    fieldType == TypeConstants.RADIO_INPUT)
                {
                    var values = Constants.ConvertJsonObject(field.value);
                    fieldViewModel.value = values;
                }
                else
                {
                    fieldViewModel.value = field.value;
                }

                fields.Add(fieldViewModel);
            }

            if (fields.Count != 0)
            {
                await fieldCollection.InsertManyAsync(fields);
            }

            IEnumerable <ObjectId> fieldIds = from _ in fields
                                              select _.Id;

            FormViewModel formViewModel = new FormViewModel
            {
                Id        = formId,
                createdAt = DateTime.UtcNow,
                createdBy = form.createdBy,
                formTitle = form.title,
                fields    = fieldIds.ToList()
            };

            await formCollection.InsertOneAsync(formViewModel);

            return(FormUtils.CombineFormAndFields(formViewModel, fields));
        }
 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()
                                      )));
 }
示例#11
0
 public TypeProp(TypeConstants type, string captionName, string valueName, int initialValue, bool readInitialValue, int min, int max, int multiplyBy)
 {
     Type             = type;
     CaptionName      = captionName;
     ValueName        = valueName;
     InitialValue     = initialValue;
     ReadInitialValue = readInitialValue;
     Min        = min;
     Max        = max;
     MultiplyBy = multiplyBy;
 }
示例#12
0
        public ValueDialog(TypeConstants type)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            _type = type;
        }
示例#13
0
        public override Word Visit(ClassNode classNode)
        {
            var className = ((MyString)classNode.IdentifierNode.Accept(this)).StringValue.ToLowerInvariant();
            var classId   = TypeConstants.AddType(className);

            if (classId < 0)
            {
                return(ErrorFactory.AlreadyDefinedClass(classNode, className));
            }

            return(new ClassDefinition(classId, className, classNode, StaticEntity));
        }
示例#14
0
        public static bool InterpretFromFileName(string filePath)
        {
            string src;

            try
            {
                src = File.ReadAllText(filePath);
            }
            catch (Exception)
            {
                //Reprotar error de preprocesador
                return(false);
            }
            var grammar   = new PyUsacGrammar();
            var langData  = new LanguageData(grammar);
            var parser    = new Irony.Parsing.Parser(langData);//Para evitar conflicto con el namespace Parser
            var parseTree = parser.Parse(src);
            var root      = parseTree.Root;

            bool hasErrors = false;

            foreach (var error in parseTree.ParserMessages)
            {
                if (error.Level == Irony.ErrorLevel.Error)
                {
                    hasErrors = true;
                }
                ErrorHelper.ErrorFactory.CreateParsingError(error, filePath);
            }
            if (hasErrors)
            {
                return(false);
            }
            //var dotCode = GetDot(root);//Descomentar en debug mode! :)

            var astBuilder = new PyAstBuilder(new AstContext(langData), filePath);

            astBuilder.BuildAst(parseTree);
            var programNode = (ProgramNode)parseTree.Root.AstNode;
            //GetDot(programNode);//Descomentar en debug mode! :)

            var entity = new StaticEntity(programNode);

            entity.InitVisitor(true);
            entity.InvokeMain();
            TypeConstants.ClearTypeHashtable();

            return(true);
        }
            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 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);
            }
            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);
            }
示例#19
0
        public async Task <FieldViewModel> AddNewFieldToForm(NewFieldViewModel field, ObjectId formId)
        {
            ObjectId fieldObjectId = ObjectId.GenerateNewId();
            string   fieldType     = field.fieldType;

            if (!TypeConstants.IsValidFieldType(fieldType))
            {
                throw new Exception("Invalid Field Type");
            }

            FieldViewModel fieldViewModel = new FieldViewModel
            {
                Id        = fieldObjectId,
                formId    = formId,
                createdAt = DateTime.UtcNow,
                index     = field.index,
                fieldType = field.fieldType,
                title     = field.title
            };

            if (fieldType == TypeConstants.CHECKBOX_INPUT || fieldType == TypeConstants.DROP_DOWN_INPUT ||
                fieldType == TypeConstants.RADIO_INPUT)
            {
                var values = Constants.ConvertJsonObject(field.value);
                fieldViewModel.value = values;
            }
            else
            {
                fieldViewModel.value = field.value;
            }

            await formCollection.UpdateOneAsync(_ => _.Id == formId,
                                                Builders <FormViewModel> .Update.Push <ObjectId>(_ => _.fields, fieldObjectId));

            await fieldCollection.InsertOneAsync(fieldViewModel);

            return(fieldViewModel);
        }
示例#20
0
        public Word Visit(IncDecExpr incDecExpr)
        {
            var result = incDecExpr.Value.Accept(this);

            if (IsError(result))
            {
                return(result);
            }
            if (!IsMemoryBlock(result))
            {
                return(ErrorFactory.IncDecNonRefError(incDecExpr.Value, incDecExpr.IncDecOperator));
            }
            var memoryBlock = (MemoryBlock)result;
            var pyObj       = memoryBlock.Value;
            var pyObjType   = pyObj.GetMyType();

            if (!TypeConstants.IsNumber(pyObjType))
            {
                return(ErrorFactory.IncDecError(incDecExpr, incDecExpr.IncDecOperator, pyObj));
            }
            var pyObjCopy = MyPrimitiveFactory.CreateCopy((MyPrimitive)pyObj);

            switch (incDecExpr.IncDecOperator)
            {
            case IncDecOperator.PlusPlus:
                memoryBlock.Value = (PyObj)pyObj.BinaryOperation(BinaryOperator.Plus, new MyInt(1));
                break;

            case IncDecOperator.MinusMinus:
                memoryBlock.Value = (PyObj)pyObj.BinaryOperation(BinaryOperator.Minus, new MyInt(1));
                break;

            default:
                throw new Exception("Operador Inc dec no valido: " + incDecExpr.IncDecOperator);
            }
            return(pyObjCopy);
        }
示例#21
0
        public async Task <FieldViewModel> UpdateField(NewFieldViewModel field, ObjectId formId, ObjectId fieldId)
        {
            if (!TypeConstants.IsValidFieldType(field.fieldType))
            {
                throw new Exception("Invalid Field Type");
            }

            string fieldType  = field.fieldType;
            object fieldValue = field.value;

            if (fieldType == TypeConstants.CHECKBOX_INPUT || fieldType == TypeConstants.DROP_DOWN_INPUT ||
                fieldType == TypeConstants.RADIO_INPUT)
            {
                var values = Constants.ConvertJsonObject(field.value);
                fieldValue = values;
            }

            UpdateResult fieldUpdateResult = await fieldCollection.UpdateOneAsync(
                _ => _.Id == fieldId && _.formId == formId,
                Builders <FieldViewModel> .Update
                .Set(_ => _.title, field.title)
                .Set(_ => _.fieldType, field.fieldType)
                .Set(_ => _.index, field.index)
                .Set(_ => _.value, fieldValue));

            if (fieldUpdateResult.IsAcknowledged)
            {
                var fieldTask = await fieldCollection.FindAsync(_ => _.Id == fieldId);

                return(await fieldTask.SingleOrDefaultAsync());
            }
            else
            {
                throw new Exception("Unable to update field content");
            }
        }
示例#22
0
 public void OnOpenCommandWindow( TypeConstants.CommandSelectType type )
 {
     this.inputArrowStateMachine.Change( (int)type );
 }
示例#23
0
 public void SetCommandType( TypeConstants.CommandType commandType )
 {
     this.CommandType = commandType;
 }
示例#24
0
 public ValueDialog(TypeConstants type)
 {
     InitializeComponent();
     _type = type;
 }
示例#25
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()));;
            }
示例#26
0
 public TypeProp(TypeConstants type, string captionName)
 {
     Type        = type;
     CaptionName = captionName;
 }
示例#27
0
 public FillDialog(bool isGray, TypeConstants type)
 {
     InitializeComponent();
     _isGray = isGray;
     _type   = type;
 }