public static void casteoImplicitoNumero(Simbolo algo1, ZContenedor d2)
        {
            if (algo1.obtenerInstanciaTipo() == TiposPrimitivos.tipoNumero && d2 is ZDecimal n2)
            {
                algo1.definirValor(new ZNumero((int)n2.obtenerValor()));
                return;
            }

            if (algo1.obtenerInstanciaTipo() == TiposPrimitivos.tipoDicimal && d2 is ZNumero n3)
            {
                algo1.definirValor(new ZDecimal(n3.obtenerValor()));
                return;
            }

            throw new SemanticError($"No se puede asignar valor de tipo '{d2.Origen.Nombre}' en variable de tipo '{algo1.obtenerInstanciaTipo().Nombre}'");
        }
        public static void AsignarValorInicial(Simbolo sim)
        {
            if (sim.obtenerInstanciaTipo() == TiposPrimitivos.tipoBool)
            {
                sim.definirValor(new ZBool(false));
                return;
            }

            if (sim.obtenerInstanciaTipo() == TiposPrimitivos.tipoNumero)
            {
                sim.definirValor(new ZNumero(0));
                return;
            }

            if (sim.obtenerInstanciaTipo() == TiposPrimitivos.tipoDicimal)
            {
                sim.definirValor(new ZDecimal(0.0));
                return;
            }

            sim.definirValor(TiposPrimitivos.instanicaNulo);
        }
 public static bool isNumeric(Simbolo algo2)
 {
     return(algo2.obtenerInstanciaTipo() == TiposPrimitivos.tipoNumero ||
            algo2.obtenerInstanciaTipo() == TiposPrimitivos.tipoDicimal);
 }