Example #1
0
        private Simbolo BuscarVariableHerencia(String nombre)
        {
            Simbolo var = null;
            Simbolo sim = BuscarClasePadre();

            FClase clase = (FClase)sim.Valor;

            if (!clase.Herencia.Equals(""))
            {
                Simbolo bc = BuscarClase(clase.Herencia, clase.ArchivoPadre);
                if (bc != null)
                {
                    var = bc.BuscarVariable(nombre);
                    if (var != null)
                    {
                        if (var.Visibilidad.Equals(Constante.TPublico) || var.Visibilidad.Equals(Constante.TProtegido))
                        {
                            var.Posicion += sim.Tamaño;
                        }
                        else
                        {
                            var = null;
                        }
                    }
                }
                else
                {
                    TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro una clase para herederar con el nombre " + clase.Herencia, TitusTools.GetRuta(), sim.Fila, sim.Columna);
                }
            }

            return(var);
        }
Example #2
0
        public Simbolo BuscarMetodoHerencia(String nombre, List <Nodo3D> parametros)
        {
            Simbolo var = null;
            Simbolo sim = BuscarClasePadre();

            FClase clase = (FClase)sim.Valor;

            if (!clase.Herencia.Equals(""))
            {
                Simbolo bc = BuscarClase(clase.Herencia, clase.ArchivoPadre);
                if (bc != null)
                {
                    var = bc.BuscarMetodo(nombre, parametros);
                    if (var != null)
                    {
                        if (!var.Visibilidad.Equals(Constante.TPublico) && !var.Visibilidad.Equals(Constante.TProtegido))
                        {
                            var = null;
                        }
                    }
                }
                else
                {
                    TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro una clase para herederar con el nombre " + clase.Herencia, TitusTools.GetRuta(), sim.Fila, sim.Columna);
                }
            }

            return(var);
        }
Example #3
0
        private String GenerarClaseConMain()
        {
            String cadena = "";
            FClase clase  = (FClase)Valor;

            cadena += clase.Generar3DconMain();
            return(cadena);
        }
Example #4
0
        public Archivo(List <String> Imports, Ambito Clases, String Ruta)
        {
            this.Imports = Imports;
            this.Clases  = Clases;
            this.Ruta    = Ruta;

            foreach (Simbolo sim in Clases.TablaSimbolo)
            {
                FClase clase = (FClase)sim.Valor;
                clase.Padre        = sim;
                clase.ArchivoPadre = this;
            }
        }
Example #5
0
        public Simbolo BuscarConstructor(String nombreClase, List <Nodo3D> parametros)
        {
            Simbolo padreclase = BuscarClasePadre();

            FClase pc = (FClase)padreclase.Valor;

            Simbolo clase = BuscarClase(nombreClase, pc.ArchivoPadre);

            if (clase != null)
            {
                Boolean encontrado = false;
                foreach (Simbolo c in clase.Ambito.TablaSimbolo)
                {
                    if (c.Rol.Equals(Constante.TConstructor) && !encontrado)
                    {
                        FMetodo metodo = (FMetodo)c.Valor;
                        if (metodo.Parametros.Count == parametros.Count)
                        {
                            Boolean error = false;
                            for (int i = 0; i < metodo.Parametros.Count; i++)
                            {
                                FParametro p          = (FParametro)metodo.Parametros[i].Valor;
                                String     tipometodo = p.Tipo;

                                String tipoparametro = parametros[i].Tipo;
                                if (p.Dimensiones > 0)
                                {
                                    tipometodo = "arreglo " + tipometodo;
                                }

                                if (!tipometodo.Equals(tipoparametro))
                                {
                                    error = true;
                                    break;
                                }
                            }
                            if (!error)
                            {
                                return(c);
                            }
                        }
                    }
                }
                if (!encontrado)
                {
                    FMetodo m = new FMetodo(Constante.TPublico, Constante.TConstructor, 0, clase.Nombre, new List <Simbolo>(), new Ambito(clase.Nombre), clase.Fila, clase.Columna);
                    return(new Simbolo(m.Visibilidad, Constante.TConstructor, m.Nombre, Constante.TConstructor, m.Fila, m.Columna, m.Ambito, m));
                }
            }
            return(null);
        }