Ejemplo n.º 1
0
        public override CheckTypesResult CheckExprTypeBounds()
        {
            CheckTypesResult result = new CheckTypesResult();

            if (newType.arrayDim != 0)
            {
                foreach (Exprent dim in lstDims)
                {
                    result.AddMinTypeExprent(dim, VarType.Vartype_Bytechar);
                    result.AddMaxTypeExprent(dim, VarType.Vartype_Int);
                }
                if (newType.arrayDim == 1)
                {
                    VarType leftType = newType.DecreaseArrayDim();
                    foreach (Exprent element in lstArrayElements)
                    {
                        result.AddMinTypeExprent(element, VarType.GetMinTypeInFamily(leftType.typeFamily)
                                                 );
                        result.AddMaxTypeExprent(element, leftType);
                    }
                }
            }
            else if (constructor != null)
            {
                return(constructor.CheckExprTypeBounds());
            }
            return(result);
        }
Ejemplo n.º 2
0
        public override VarType GetExprType()
        {
            VarType exprType = array.GetExprType();

            if (exprType.Equals(VarType.Vartype_Null))
            {
                return(hardType.Copy());
            }
            else
            {
                return(exprType.DecreaseArrayDim());
            }
        }