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); }
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); }
private String GenerarClaseConMain() { String cadena = ""; FClase clase = (FClase)Valor; cadena += clase.Generar3DconMain(); return(cadena); }
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; } }
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); }