public static string escrbiriAtributosContenedor(string nombre, Simbolo nodo)
        {
            string result = "";
            TeDeU  type   = nodo.obtenerInstanciaTipo();

            if (Utilidades.esPrimitivo(type))
            {
                return($"{nodo.obtenerValor().stringBonito()} ");
            }

            if (nodo.obtenerValor() is ZInstancia instancia)
            {
                result += escribirContenedor(instancia);

                return(result);
            }

            if (nodo.obtenerValor() is ZNull)
            {
                return($"{nodo.obtenerValor().stringBonito()}");
            }



            return(result);
        }
 public static bool esPrimitivo(TeDeU type)
 {
     return(type == TiposPrimitivos.tipoBool || type == TiposPrimitivos.tipoDate ||
            type == TiposPrimitivos.tipoDicimal ||
            type == TiposPrimitivos.tipoNumero || type == TiposPrimitivos.tipoString ||
            type == TiposPrimitivos.tipoTime);
 }
示例#3
0
        public string writeParameters(NodoDeclararParametro parametro, bool primero, bool @in)
        {
            string result = "";

            result += primero ? $"{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab},<\n";


            result += $"{tab}{tab}{tab}{tab}";
            result += $"{co}NAME{co}={co}{parametro.Id}{co},\n";

            result += $"{tab}{tab}{tab}{tab}";
            TeDeU tipo = (TeDeU)parametro.Tipo.ejecutar(ambitoCaputrado);

            result += $"{co}TYPE{co}={co}{tipo.Nombre}{co},\n";

            result += $"{tab}{tab}{tab}{tab}";
            result += $"{co}AS{co}=";

            result += @in ? "IN": "OUT";
            result += "\n";


            result += $"{tab}{tab}{tab}{tab}>\n";
            return(result);
        }
示例#4
0
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU tipo = e.getTeDeU("int");

            tipo.isCount = true;
            return(tipo);
        }
示例#5
0
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU   ti      = (TeDeU)tipo.ejecutar(e);
            Funcion funcion = new Funcion(ti, parametros, lInsturcciones, e);

            e.declararFuncion(id, funcion);
            return(null);
        }
示例#6
0
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU  @struct = (TeDeU)tipo.ejecutar(e);
            ZTupla algo    = (ZTupla)tupla.ejecutar(e);


            ZInstancia zinstancia = @struct.crearInstancia(e);

            @struct.asignarValores(algo.argumentos, zinstancia);
            return(zinstancia);
        }
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU nuevoTeDeU = new TeDeU(id);

            nuevoTeDeU.definirListaDeclaraciones(listaAtributos);
            e.setTeDeU(id, nuevoTeDeU);


            //se declara el TeDeU
            return(null);
        }
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU tipo = (TeDeU)this.tipo.ejecutar(e);

            Simbolo sim = new Simbolo(tipo, null);

            //se agrega el valor inicial
            Utilidades.AsignarValorInicial(sim);

            e.setVariable(id, sim);

            return(sim);
        }
示例#9
0
        public TeDeU obtenerTedeULista(TeDeU teDeUElementoLista)
        {
            var entryResult = entries.Find(entry => entry.Key == teDeUElementoLista);

            if (entryResult != null)
            {
                return(entryResult.Value);
            }

            var teDeULista = new TeDeULista($"list<{teDeUElementoLista.Nombre}>", teDeUElementoLista);

            entries.Add(new Entry(teDeUElementoLista, teDeULista));
            return(teDeULista);
        }
        public override object ejecutarSinposicion(ZContenedor e)
        {
            //obtener tipo
            TeDeU t = (TeDeU)tipo.ejecutar(e);


            foreach (NodoDeclararVar decV in declaraciones)
            {
                decV.definirTipo(t);
                decV.ejecutar(e);
            }

            //e.setVariable(id,new Simbolo(t, null));

            return(null);
        }
示例#11
0
        public string writeObject(TeDeU tedeu, bool primero)
        {
            string result = "";

            result += primero ? $"{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab},<\n";

            result += $"{tab}{tab}{tab}{tab}";
            result += $"{co}CQL-TYPE{co}={co}OBJECT{co},\n";

            result += $"{tab}{tab}{tab}{tab}";
            result += $"{co}NAME{co}={co}{tedeu.Nombre}{co},\n";


            result += $"{tab}{tab}{tab}{tab}";
            result += $"{co}ATTRS{co}=[\n";

            bool primeroAtr = true;

            foreach (NodoDeclararParametro nodo in tedeu.ListaDelcaraciones)
            {
                result += primeroAtr ? $"{tab}{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab}{tab},<\n";

                result += $"{tab}{tab}{tab}{tab}{tab}{tab}";
                result += $"{co}NAME{co}={co}{nodo.Id}{co},\n";

                result += $"{tab}{tab}{tab}{tab}{tab}{tab}";
                TeDeU type = (TeDeU)nodo.Tipo.ejecutar(ambitoCaputrado);

                result += $"{co}TYPE{co}={co}{type.Nombre}{co}\n";


                result    += $"{tab}{tab}{tab}{tab}{tab}>\n";
                primeroAtr = false;
            }



            result += $"{tab}{tab}{tab}{tab}]\n";
            result += $"{tab}{tab}{tab}>\n";



            return(result);
        }
示例#12
0
        public string writeAtributes(Simbolo simbolo)
        {
            string result = "";

            TeDeU tipo = simbolo.obtenerInstanciaTipo();

            if (Utilidades.esPrimitivo(tipo) || simbolo.obtenerValor() is ZNull)
            {
                return($"{simbolo.obtenerValor().stringBonito()}");
            }


            if (simbolo.obtenerValor() is ZInstancia)
            {
                return("\n" + writeContainer(simbolo.obtenerValor(), true));
            }

            throw new RuntimeBinderException("erro al escrbirir archivo chison, bd-atributos");
            //return result;
        }
示例#13
0
        public string writeEncabezados(NodoDeclararEncabezados nodo, bool primero)
        {
            string result = "";

            result += primero ? $"{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab},<\n";

            result += $"{tab}{tab}{tab}{tab}{tab}";
            result += $"{co}NAME{co}={co}{nodo.Nombre}{co},\n";

            result += $"{tab}{tab}{tab}{tab}{tab}";
            TeDeU tipo = (TeDeU)nodo.Tipo.ejecutar(ambitoCaputrado);

            result += $"{co}TYPE{co}={co}{tipo.Nombre}{co},\n";

            result += $"{tab}{tab}{tab}{tab}{tab}";
            result += $"{co}PK{co}={co}TRUE{co}\n";

            result += $"{tab}{tab}{tab}{tab}>\n";



            return(result);
        }
        public ZContenedor ladoDerechoCadena(string valor, TeDeU tipo)
        {
            if (tipo == TiposPrimitivos.tipoDate)
            {
                return(new ZDate(valor));
            }

            if (tipo == TiposPrimitivos.tipoTime)
            {
                return(new ZTiempo(valor));
            }

            if (tipo == TiposPrimitivos.tipoNumero)
            {
                try
                {
                    return(new ZNumero(Convert.ToInt32(valor)));
                }
                catch (Exception e)
                {
                    throw new SemanticError("no se puede convertir este valor a entero");
                }
            }

            if (tipo == TiposPrimitivos.tipoDicimal)
            {
                try
                {
                    return(new ZDecimal(Convert.ToDouble(valor)));
                }
                catch (Exception e)
                {
                    throw new SemanticError("no se puede convertir este valor a decimal");
                }
            }
            throw new SemanticError("se esta intentando castear un tipo a string no compatible");
        }
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU       tedeu = (TeDeU)tipo.ejecutar(e);
            Object      algo  = this.valor.ejecutar(e);
            ZContenedor valor = Utilidades.desenvolver(algo);



            //lado izquierdo cadena
            if (tedeu == TiposPrimitivos.tipoString)
            {
                return(casteoExplicitoCadnea(valor));
            }

            //lado derecho cadena
            if (valor is ZCadena n1)
            {
                return(ladoDerechoCadena(n1.obtenerValor(), tedeu));
            }



            throw new SemanticError("se esta intentando castear un tipo a string no compatible");
        }
示例#16
0
 public ZNull(ZContenedor anterior, TeDeU origen) : base(anterior, origen)
 {
 }
示例#17
0
 public Entry(TeDeU key, TeDeU value)
 {
     Key   = key;
     Value = value;
 }
示例#18
0
 public TeDeULista(string nombre, TeDeU tipoElemento) : base(nombre)
 {
     this.TipoElemento = tipoElemento;
 }
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU tedeu = e.getTeDeU(id);

            return(tedeu.crearInstancia(e));
        }
示例#20
0
 public Simbolo(TeDeU instanciaTipo, ZContenedor valorInicial)
 {
     this.instanciaTipo = instanciaTipo;
     valor = valorInicial;
 }
示例#21
0
        public override object ejecutarSinposicion(ZContenedor e)
        {
            TeDeU t = e.getTeDeU(nombreTipo); //obtner tipo tdu //asignacion //

            return(t);
        }
示例#22
0
 public void definirTipo(TeDeU tipo)
 {
     this.tipo = tipo;
 }
示例#23
0
 public ZInstancia(ZContenedor anterior, TeDeU origen) : base(anterior, origen)
 {
 }