public void ImprimirDecimal() { Variable v = Tabla3D.BuscarVariable(Temporal); if (v != null) { if (v.Valor != null) { FNodoExpresion valor = (FNodoExpresion)v.Valor; if (valor.Tipo.Equals(Constante.TDecimal)) { TitusTools.ImprimirConsola(valor.Decimal.ToString()); TitusTools.ImprimirConsola("\n"); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede imprimir un decimal porque el valor no es decimal del temporal " + Temporal, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); } } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se ha asignado ningun valor al temporal " + Temporal, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); } } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No existe el temporal " + Temporal, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); } }
public String Generar3D() { String cadena = "\t\t//Comienza elegir\n"; String salida = TitusTools.GetEtq(); Nodo3D cond = Condicion.Generar3D(); cadena += cond.Codigo; foreach (FCaso caso in Casos) { cadena += caso.Generar3D(cond); } if (Defecto != null) { cadena += Defecto.Generar3D(); } cadena += "\t" + salida + "://termina elegir\n"; cadena = cadena.Replace("§salir§;", "goto " + salida + ";\n"); return(cadena); }
public String Ejecutar() { FNodoExpresion aux = Condicion.ResolverExpresion(); if (!TitusTools.HayErrores()) { if (aux.Tipo.Equals(Constante.TBooleano)) { if (this.Tipo.Equals(Constante.TIf)) { if (aux.Bool) { return(Etiqueta); } } else { if (!aux.Bool) { return(Etiqueta); } } } } return(""); }
//para asignacion public Nodo3D Generar3DAsignacion() { Nodo3D nodo = new Nodo3D(); Simbolo sim = Padre.BuscarVariable(this.Nombre); if (sim != null)//es un arreglo { FLlamadaArreglo arr = new FLlamadaArreglo(this.Nombre, Parametros, Fila, Columna); arr.setPadre(Padre); nodo = arr.Generar3DAsignacion(); } else// es un metodo { FLlamadaMetodo metodo = new FLlamadaMetodo(this.Nombre, this.Parametros, Fila, Columna); metodo.setPadre(Padre); nodo = metodo.Generar3DAsignacion(); sim = metodo.Encontrado; } if (sim == null) { TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro un arreglo o metodo para ejecutar", TitusTools.GetRuta(), Fila, Columna); } return(nodo); }
static void Regla3(List <Simbolo> Mirilla) { int tope = Mirilla.Count; Simbolo si = null; Simbolo gt = null; for (int i = 0; i < tope; i++) { Simbolo aux = Mirilla[i]; if (aux.Tipo == Constante.TIf) { FIf f = (FIf)aux.Valor; if (f.Tipo.Equals(Constante.TIf)) { si = aux; } } else { if (si != null && gt == null) { if (aux.Rol.Equals(Constante.TGoto)) { gt = aux; } else { si = null; } } else { if (gt != null) { if (aux.Rol.Equals(Constante.Etiqueta)) { FIf f = (FIf)si.Valor; if (f.Etiqueta.Equals(aux.Nombre)) { TitusTools.InsertarReporteOptimizacion("Regla 3", "if " + f.Condicion.Generar3DOptimizado() + " goto " + f.Etiqueta, si.Fila, si.Columna); f.Tipo = Constante.TIfFalse; f.Etiqueta = gt.Nombre; Mirilla.Remove(gt); Mirilla.Remove(aux); tope = Mirilla.Count; i = i - 2; si = null; gt = null; } } else { si = null; gt = null; } } } } } }
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 void EjecutarError(Simbolo sim) { switch (sim.Nombre) { case "1": TitusTools.InsertarError(Constante.TErrorSemantico, "Acceso fuera de los limites", TitusTools.GetRuta(), sim.Fila, sim.Columna); break; case "2": TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede asignar el arreglo por que las dimensiones y sus tamaños no son iguales", TitusTools.GetRuta(), sim.Fila, sim.Columna); break; case "3": TitusTools.InsertarError(Constante.TErrorSemantico, "No se puedo convertir de cadena a entero", TitusTools.GetRuta(), sim.Fila, sim.Columna); break; case "4": TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede convertir de cadena a decimal", TitusTools.GetRuta(), sim.Fila, sim.Columna); break; default: TitusTools.InsertarError(Constante.TErrorSemantico, "Error desconocido", TitusTools.GetRuta(), sim.Fila, sim.Columna); break; } }
public void AsignarTemporal() { Variable variable = Tabla3D.BuscarVariable(Temporal); if (variable != null) { FNodoExpresion valor = this.Valor.ResolverExpresion(); if (!TitusTools.HayErrores()) { if (valor.Tipo.Equals(Constante.TEntero) || valor.Tipo.Equals(Constante.TDecimal)) { variable.Valor = valor; Console.WriteLine(variable.Nombre + " = " + valor.Cadena); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "Se esperaba un valor numerico.", TitusTools.GetRuta(), this.Valor.Fila, this.Valor.Columna); } } } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontroo el temporal " + this.Temporal, TitusTools.GetRuta(), this.Valor.Fila, this.Valor.Columna); } }
static void Regla19(List <Simbolo> Mirilla) { foreach (Simbolo sim in Mirilla.ToList()) { if (sim.Rol.Equals(Constante.ASIGNACION)) { FAsignacion3D asignacion = (FAsignacion3D)sim.Valor; if (asignacion.Valor.Tipo.Equals(Constante.TDivision)) { FNodoExpresion izq = asignacion.Valor.Izquierda; FNodoExpresion der = asignacion.Valor.Derecha; if (izq.Tipo.Equals(Constante.TEntero)) { if (der.Tipo == Constante.TP || der.Tipo == Constante.Temporal || der.Tipo == Constante.TH) { if (izq.Entero == 0) { asignacion.Valor = izq; TitusTools.InsertarReporteOptimizacion("Regla 19", asignacion.Temporal + " = 0 / " + der.Nombre + ";", sim.Fila, sim.Columna); //Mirilla.Remove(sim); } } } } } } }
static void Regla16(List <Simbolo> Mirilla) { foreach (Simbolo sim in Mirilla.ToList()) { if (sim.Rol.Equals(Constante.ASIGNACION)) { FAsignacion3D asignacion = (FAsignacion3D)sim.Valor; if (asignacion.Valor.Tipo.Equals(Constante.TPotenciaOCL)) { FNodoExpresion izq = asignacion.Valor.Izquierda; FNodoExpresion der = asignacion.Valor.Derecha; if (der.Tipo.Equals(Constante.TEntero)) { if (izq.Tipo == Constante.TP || izq.Tipo == Constante.Temporal || izq.Tipo == Constante.TH) { if (der.Entero == 2) { asignacion.Valor = new FNodoExpresion(izq, izq, Constante.TPor, Constante.TPor, asignacion.Valor.Fila, asignacion.Valor.Columna, null); TitusTools.InsertarReporteOptimizacion("Regla 16", asignacion.Temporal + " = " + izq.Nombre + " ^ 2;", sim.Fila, sim.Columna); //Mirilla.Remove(sim); } } } } } } }
static void Regla11(List <Simbolo> Mirilla) { foreach (Simbolo sim in Mirilla.ToList()) { if (sim.Rol.Equals(Constante.ASIGNACION)) { FAsignacion3D asignacion = (FAsignacion3D)sim.Valor; if (asignacion.Tipo.Equals(Constante.Temporal)) { if (asignacion.Valor.Tipo.Equals(Constante.TDivision)) { FNodoExpresion izq = asignacion.Valor.Izquierda; FNodoExpresion der = asignacion.Valor.Derecha; if (izq != null) { if (izq.Tipo.Equals(Constante.TEntero) || der.Tipo.Equals(Constante.TEntero)) { if (izq.Tipo == Constante.Temporal && asignacion.Temporal.Equals(izq.Nombre)) { if (der.Entero == 1) { TitusTools.InsertarReporteOptimizacion("Regla 11", asignacion.Temporal + " = " + izq.Nombre + " / 1;", sim.Fila, sim.Columna); Mirilla.Remove(sim); } } } } } } } } }
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); }
public void GenerarTablaSimbolos() { IniciarTablaSimbolos(); foreach (Simbolo simbolo in Clases.TablaSimbolo) { GenerarTablaSimbolos(simbolo, ""); } TitusTools.InsertarTablaSimbolos(this.TablaSimbolos); }
public String Generar3DInit() { String temp = TitusTools.GetTemp(); String init = "void init_" + this.Nombre + "(){\n"; init += "\t\t" + temp + " = H;\n"; int sizeherencia = Ambito.Tamaño; String init3 = ""; foreach (Simbolo sim in Ambito.TablaSimbolo) { if (sim.Rol.Equals(Constante.DECLARACION)) { FDeclaracion decla = (FDeclaracion)sim.Valor; init3 += decla.Generar3DInit(temp, 0); } } //buscamos los init de los hereda if (!Herencia.Equals("")) { String herencia = Herencia; while (herencia != "") { Simbolo clase = Padre.BuscarClase(herencia, ArchivoPadre); if (clase != null) { FClase nuevaclase = (FClase)clase.Valor; foreach (Simbolo sim in nuevaclase.Ambito.TablaSimbolo) { if (sim.Rol.Equals(Constante.DECLARACION)) { FDeclaracion decla = (FDeclaracion)sim.Valor; init3 += decla.Generar3DInit(temp, sizeherencia); } } sizeherencia += nuevaclase.Ambito.Tamaño; herencia = nuevaclase.Herencia; } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro la clase para heredar " + herencia, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); break; } } } String init2 = "\t\t" + "H = H + " + sizeherencia.ToString() + ";\n"; init += init2 + init3; init += "}\n\n"; return(init); }
private String GenerarRetornar() { String cadena = ""; Nodo3D val = ((FNodoExpresion)Valor).Generar3D(); Simbolo metodopadre = BuscarMetodoPadre(); FMetodo met = (FMetodo)metodopadre.Valor; String tipometodo = metodopadre.Tipo; if (met.Dimensiones > 0) { tipometodo = "arreglo " + tipometodo; } if (val.Tipo.Equals(Constante.TBooleano)) { if (val.V == "" && val.F == "") {//si trae etiquetas viene de una relacional si no es un bool nativo } else { var cad = ""; var auxtemp = TitusTools.GetTemp(); var salida = TitusTools.GetEtq(); cad += "\t" + val.V + ":\n"; cad += "\t\t" + auxtemp + " = 1;\n"; cad += "\t\t" + "goto " + salida + ";\n"; cad += "\t" + val.F + ":\n"; cad += "\t\t" + auxtemp + " = 0;\n"; cad += "\t" + salida + ":\n"; val.Valor = auxtemp; cad += "\t\t" + val.Valor + " = - " + auxtemp + ";\n"; val.Codigo = val.Codigo + cad; } } if (tipometodo.Equals(val.Tipo)) { String retorno = TitusTools.GetTemp(); cadena += val.Codigo; cadena += "\t\t" + retorno + " = P + 1;//Posicion de retorno\n"; cadena += "\t\t" + "Stack[" + retorno + "] = " + val.Valor + ";//Asignacion de retorno\n"; cadena += "\t\t§retornar§;\n"; } else { TitusTools.InsertarError(Constante.TErrorSemantico, "El metodo " + met.Nombre + " solo puede retornar un tipo " + tipometodo + ", no un tipo " + val.Tipo, TitusTools.GetRuta(), Fila, Columna); } return(cadena); }
public String Generar3D() { String cadena = "\t\t//Comienza si\n"; Nodo3D cond = Condicion.Generar3D(); if (cond.Tipo == Constante.TBooleano) { String salida = TitusTools.GetEtq(); //Parte del if cadena += cond.Codigo; if (cond.V != "" && cond.F != "") { cadena += "\t" + cond.V + ":\n"; foreach (Simbolo sim in Ambito.TablaSimbolo)//cuerpo si es verdadero { cadena += sim.Generar3D(); } } else { cond.V = TitusTools.GetEtq(); cond.F = TitusTools.GetEtq(); cadena += "\t\t" + "if " + cond.Valor + " == 1 goto " + cond.V + ";\n"; cadena += "\t\t" + "goto " + cond.F + ";\n"; cadena += "\t" + cond.V + ":\n"; foreach (Simbolo sim in Ambito.TablaSimbolo)//cuerpo si es verdadero { cadena += sim.Generar3D(); } } cadena += "\t\t" + "goto " + salida + ";\n"; cadena += "\t" + cond.F + ":\n"; //parte de los sinosi foreach (FSinoSi sinosi in SinoSi) { cadena += sinosi.Generar3D(salida); } if (Sino != null) { cadena += Sino.Generar3D(salida); } cadena += "\t" + salida + "://Termina si\n"; } else { TitusTools.InsertarError(Constante.TErrorSemantico, "La sentencia si esperaba un tipo booleano no un tipo " + cond.Tipo, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); } return(cadena); }
public void Ejecutar() { PrimerPasada(); if (!TitusTools.HayErrores()) { MessageBox.Show("Ejecucion de codigo 3D finalizada con exito.", "Codigo 3D", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Se encontraron errores", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void EjecutarLlamadaMetodo(Simbolo sim) { FMetodo metodo = Tabla3D.BuscarMetodo(sim.Nombre); if (metodo != null) { metodo.Ejecutar(); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro el metodo " + sim.Nombre, TitusTools.GetRuta(), sim.Fila, sim.Columna); } }
static void Regla7(List <Simbolo> Mirilla) { int tope = Mirilla.Count; Simbolo go = null; Simbolo et = null; for (int i = 0; i < tope; i++) { Simbolo aux = Mirilla[i]; if (aux.Rol == Constante.TIf && go == null && et == null) { go = aux; } else { if (go != null && et == null) { if (aux.Rol.Equals(Constante.Etiqueta)) { FIf f = (FIf)go.Valor; if (aux.Nombre.Equals(f.Etiqueta)) { et = aux; } else { go = null; } } } else { if (aux.Rol.Equals(Constante.TGoto)) { FIf f = (FIf)go.Valor; TitusTools.InsertarReporteOptimizacion("Regla 7", "if " + f.Condicion.Generar3DOptimizado() + "goto " + f.Etiqueta, go.Fila, go.Columna); f.Etiqueta = aux.Nombre; go = null; et = null; } else { go = null; et = null; } } } } }
public String Generar3D(String salida) { String cadena = "\t\t//Comienza sino\n"; if (!TitusTools.HayErrores()) { foreach (Simbolo sim in Ambito.TablaSimbolo)//cuerpo si es verdadero { cadena += sim.Generar3D(); } cadena += "\t\t" + "//Termina sino\n"; } return(cadena); }
public void GenerarImports() { List <String> nuevosImports = new List <String>(); foreach (String ruta in Imports) { if (!TitusTools.ExisteArchivo(ruta)) { if (ruta.ToLower().Contains("http://")) { ObtenerCodigoArchivos(ruta, 0); } else if (ruta.ToLower().Contains("\\")) { if (ruta.ToLower().Contains(".tree")) { ObtenerCodigoArchivos(ruta, 1); } else if (ruta.ToLower().Contains(".olc")) { ObtenerCodigoArchivos(ruta, 2); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede importar la ruta " + ruta, this.Ruta, 1, 1); } } else { if (ruta.ToLower().Contains(".tree")) { nuevosImports.Add(Path.GetDirectoryName(this.Ruta) + "\\" + ruta); ObtenerCodigoArchivos(Path.GetDirectoryName(this.Ruta) + "\\" + ruta, 1); } else if (ruta.ToLower().Contains(".olc")) { nuevosImports.Add(Path.GetDirectoryName(this.Ruta) + "\\" + ruta); ObtenerCodigoArchivos(Path.GetDirectoryName(this.Ruta) + "\\" + ruta, 2); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede importar la ruta " + ruta, this.Ruta, 1, 1); } } } } Imports = nuevosImports; }
public void PrimerPasada() { //Limpiamos las variables que utilizamos para la ejecucion Tabla3D.IniciarTabla(); //buscamos el main y apartamos la primera posicion de la tabla de variables foreach (Simbolo sim in Codigo3D.TablaSimbolo) { if (sim.Rol.Equals(Constante.TMain)) { if (Tabla3D.Tabla.Count == 0) { Tabla3D.Tabla.Insert(0, new Variable(sim.Nombre, sim.Rol, sim.Fila, sim.Columna, sim.Ambito, sim.Valor)); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "Exite mas de un metodo main", TitusTools.GetRuta(), 1, 1); } } } foreach (Simbolo sim in Codigo3D.TablaSimbolo) { if (!sim.Rol.Equals(Constante.TMain)) { Tabla3D.Tabla.Add(new Variable(sim.Nombre, sim.Rol, sim.Fila, sim.Columna, sim.Ambito, sim.Valor)); } } if (!TitusTools.HayErrores()) { if (Tabla3D.Tabla.Count > 0) { if (!Tabla3D.Tabla[0].Rol.Equals(Constante.TMain)) { TitusTools.InsertarError(Constante.TErrorSemantico, "No se encontro un metodo main", TitusTools.GetRuta(), 1, 1); } else { FMetodo main = (FMetodo)Tabla3D.Tabla[0].Valor; main.Ejecutar(); } } } }
public String Generar3D() { String cadena = ""; String retorno = TitusTools.GetEtq(); if (!TitusTools.HayErrores()) { cadena = "\t\t//Comienza para\n"; cadena += AccionAnterior.Generar3D();//asignacion de variables cadena += "\t" + retorno + ":\n"; Nodo3D cond = Condicion.Generar3D(); cadena += cond.Codigo; if (cond.Tipo == Constante.TBooleano) { if (cond.V == "" || cond.F == "") { cond.V = TitusTools.GetEtq(); cond.F = TitusTools.GetEtq(); cadena += "\t" + "if " + cond.Valor + " == 1 goto " + cond.V + ";\n"; cadena += "\t" + "goto " + cond.F + ";\n"; } cadena += "\t" + cond.V + ":\n"; foreach (Simbolo sim in Ambito.TablaSimbolo)//cuerpo si es verdadero { cadena += sim.Generar3D(); } cadena += AccionSiguiente.Generar3D();//actualizacion de varaibles cadena += "\t\t" + "goto " + retorno + ";\n"; cadena += "\t" + cond.F + "://Termina para\n"; cadena = cadena.Replace("§salir§;", "goto " + cond.F + ";\n"); cadena = cadena.Replace("§continuar§;", "goto " + cond.V + ";\n"); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "El ciclo for esperaba un tipo booleano no un tipo " + cond.Tipo, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); } } return(cadena); }
static void Regla6(List <Simbolo> Mirilla) { int tope = Mirilla.Count; Simbolo go = null; Simbolo et = null; for (int i = 0; i < tope; i++) { Simbolo aux = Mirilla[i]; if (aux.Rol == Constante.TGoto && go == null && et == null) { go = aux; } else { if (go != null && et == null) { if (aux.Rol.Equals(Constante.Etiqueta)) { if (aux.Nombre.Equals(go.Nombre)) { et = aux; } else { go = null; } } } else { if (aux.Rol.Equals(Constante.TGoto)) { TitusTools.InsertarReporteOptimizacion("Regla 6", "goto " + go.Nombre, go.Fila, go.Columna); go.Nombre = aux.Nombre; go = null; et = null; } else { go = null; et = null; } } } } }
public String Generar3D() { String cadena = ""; Nodo3D val = Valor.Generar3D(); cadena += val.Codigo; switch (val.Tipo) { case Constante.TCadena: { String temp = TitusTools.GetTemp(); String etq = TitusTools.GetEtq(); cadena += "\t" + etq + "://comienza imprimir\n"; cadena += "\t\t" + temp + " = " + "Heap[" + val.Valor + "];\n"; cadena += "\t\t" + "print(\"%c\", " + temp + ");\n"; cadena += "\t\t" + val.Valor + " = " + val.Valor + " + 1 ;\n"; cadena += "\t\t" + "if " + temp + " != 0 goto " + etq + ";//Termina imprimir\n"; } break; case Constante.TCaracter: { cadena += "\t\t" + "print(\"%c\", " + val.Valor + ");//Termina imprimir\n"; } break; case Constante.TEntero: { cadena += "\t\t" + "print(\"%d\", " + val.Valor + ");//Termina imprimir\n"; } break; case Constante.TDecimal: { cadena += "\t\t" + "print(\"%f\", " + val.Valor + ");//Termina imprimir\n"; } break; default: TitusTools.InsertarError(Constante.TErrorSemantico, "No se puede imprimir un tipo " + val.Tipo, TitusTools.GetRuta(), Padre.Fila, Padre.Columna); break; } return(cadena); }
static void Regla2(List <Simbolo> Mirilla) { int star = -1; int end = -1; int tope = Mirilla.Count; Simbolo gt = null; for (int i = 0; i < tope; i++) { if (gt == null) { if (Mirilla[i].Rol.Equals(Constante.TGoto)) { gt = Mirilla[i]; star = i; } } else { if (Mirilla[i].Rol.Equals(Constante.Etiqueta)) { if (Mirilla[i].Nombre.Equals(gt.Nombre)) { end = i; i = i - ((end - star) - 1); Mirilla.RemoveRange(star + 1, end - star - 1); tope = Mirilla.Count; if (end - star - 1 > 0) { TitusTools.InsertarReporteOptimizacion("Regla 2", "goto " + gt.Nombre, gt.Fila, gt.Columna); } gt = null; star = -1; end = -1; } else { gt = null; star = -1; } } } } }
public int EjecutarGoTo(Simbolo sim) { Boolean estado = false; int i = -1; Simbolo anterior = sim.Anterior; while (anterior != null) { if (anterior.Rol.Equals(Constante.Etiqueta) && anterior.Nombre.Equals(sim.Nombre)) { estado = true; break; } i--; anterior = anterior.Anterior; } if (!estado) { i = 1; Simbolo siguiente = sim.Siguiente; while (siguiente != null) { if (siguiente.Rol.Equals(Constante.Etiqueta) && siguiente.Nombre.Equals(sim.Nombre)) { estado = true; break; } i++; siguiente = siguiente.Siguiente; } } if (estado) { return(i); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "No se econtro la etiqueta " + sim.Nombre, TitusTools.GetRuta(), sim.Fila, sim.Columna); return(0); } }
public void AsignarP() { FNodoExpresion valor = this.Valor.ResolverExpresion(); if (!TitusTools.HayErrores()) { if (valor.Tipo.Equals(Constante.TEntero)) { Tabla3D.P = valor.Entero; Console.WriteLine("P = " + valor.Cadena); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "Se esperaba un valor numerico.", TitusTools.GetRuta(), this.Valor.Fila, this.Valor.Columna); } } }
public String Generar3D() { String cadena = ""; String salida = TitusTools.GetEtq(); cadena += "void " + GetNombre3D() + "(){\n"; foreach (Simbolo simbolo in Ambito.TablaSimbolo) { cadena += simbolo.Generar3D(); } cadena += "\t" + salida + ":\n"; cadena += "}\n\n"; cadena = cadena.Replace("§retornar§;", "goto " + salida + ";//salida al fin de metodo\n"); return(cadena); }
public void AsignarStack() { FNodoExpresion acceso = this.Acceso.ResolverExpresion(); FNodoExpresion valor = this.Valor.ResolverExpresion(); if (!TitusTools.HayErrores()) { if (acceso.Tipo.Equals(Constante.TEntero)) { Tabla3D.InsertarStack(acceso.Entero, valor); Console.WriteLine(Acceso.Fila.ToString() + " Stack[" + acceso.Cadena + "] = " + valor.Cadena); } else { TitusTools.InsertarError(Constante.TErrorSemantico, "Se esperaba un valor entero para acceder al heap.", TitusTools.GetRuta(), this.Acceso.Fila, this.Acceso.Columna); } } }