Ejemplo n.º 1
0
        public Funcion(TeDeU tipoRetorno, List <NodoDeclararParametro> nodosDeclararParametro, List <Instruccion> listaInstrucciones, ZContenedor ambitoCapturado)
        {
            this.tipoRetorno            = tipoRetorno;
            this.nodosDeclararParametro = nodosDeclararParametro;
            this.listaInstrucciones     = listaInstrucciones;
            this.ambitoCapturado        = ambitoCapturado;

            //se valida que el ambito capturado sea una funcion
        }
Ejemplo n.º 2
0
        public ZLista(List <ZContenedor> elementos, TeDeU origen) : base(null, origen)
        {
            this.Elementos = elementos;

            cargarFuncionInsert();
            cargarFuncionGet();
            cargarFuncionSet();
            cargarFuncionRemove();
            cargarFuncionSize();
            cargarFuncionClear();
            cargarFuncionContains();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// esta funcion verifia que la funcion invocada contenga los mismos argumentos
        /// </summary>
        /// <param name="argumentos"></param>
        /// <returns>bool</returns>
        public bool mismFirma(List <ZContenedor> argumentos)
        {
            if (cantParametros() != argumentos.Count)
            {
                return(false);
            }

            for (int x = 0; x < argumentos.Count; x++)
            {
                TeDeU tipo1 = (TeDeU)nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado);
                TeDeU tipo2 = argumentos[x].Origen;

                if (tipo1 != tipo2 && tipo2 != TiposPrimitivos.tipoNulo)
                {
                    return(false);
                }
            }
            //son iguales
            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// esta funcion verifica si no hay una funcion con la misma firma, de lo contrario se agrega al entrono
        /// </summary>
        /// <param name="funcion"></param>
        /// <returns></returns>
        public bool mismFirma(Funcion funcion)
        {
            if (cantParametros() != funcion.cantParametros())
            {
                return(false);
            }

            for (int x = 0; x < cantParametros(); x++)
            {
                TeDeU tipo1 = (TeDeU)nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado);
                TeDeU tipo2 = (TeDeU)funcion.nodosDeclararParametro[x].Tipo.ejecutar(ambitoCapturado);

                if (tipo1 != tipo2)
                {
                    return(false);
                }
            }
            //son iguales
            return(true);
        }
Ejemplo n.º 5
0
 //
 public FuncionNativa(TeDeU tipoRetorno, List <NodoDeclararParametro> nodosDeclararParametro, ZContenedor ambitoCapturado, funcionNativaDelegado f) : base(tipoRetorno, nodosDeclararParametro, new List <Instruccion>(), ambitoCapturado)
 {
     _f = f;
 }