private void Click_compilar(object sender, EventArgs e) { if (rutaArchivo != null) { using (StreamWriter escritura = new StreamWriter(rutaArchivo)) { escritura.Write(cuadro.Text); } } else { if (guardar.ShowDialog() == DialogResult.OK) { rutaArchivo = guardar.FileName; using (StreamWriter escritura = new StreamWriter(guardar.FileName)) { escritura.Write(cuadro.Text); } } } string[] lineas = System.IO.File.ReadAllLines(rutaArchivo); //string cadenas ="+-{;}"; //Console.WriteLine("Coincidencias primer archivo: \t"); lexico analizador = new lexico(); Symtab.LimpiarTabla(); int lineaP = 1; foreach (string linea in lineas) { analizador.Analizado_Lexico(linea, lineaP); lineaP++; } analizador.obtenerTokens2(); LexicoTextBox.Text = analizador.tokensResultados(); analizador.obtenerTokens2E(); ErroresTextBox.Text = analizador.tokensResultadosE(); //Para el analizador sintactico if (analizador.tokensResultadosE() == null) { Sintactico analizadorSintactico = new Sintactico(analizador.obtenerTokens()); CodigoIntermedio CodigoInter = new CodigoIntermedio(); codigointermedio.Text = ""; Nodo arbol = new Nodo(); Semantico.limpiarSemantico(); arbol = analizadorSintactico.arbolSintactico(); //ErroresTextBox.Text = analizadorSintactico.getNodosArbol(arbol); Semantico.InsertarId(arbol); Semantico.TypeCheck(arbol); //ResulTextBox.Text = analizadorSintactico.getNodosArbol(arbol); //Arbol es el que utilizamos para enviarlo al TreeView arbolSintactico.Nodes.Clear(); arbolSemantico.Nodes.Clear(); TreeNode auxSintactico = arbolSintactico.Nodes.Add(arbol.getLexema()); TreeNode auxSemantico = arbolSemantico.Nodes.Add(arbol.getLexema()); CrearTreeview(null, auxSintactico, arbol); CrearTreeviewAtrib(null, auxSemantico, arbol); ErroresTextBox.Text += analizadorSintactico.erroresSintacticos() + Semantico.GetErroresSemantico(); ResulTextBox.Text = Symtab.GetSymtab(); //Semantico.TablaSemantico(); tablaSin = Semantico.tablaSi(); MostrarTabla(); //CodigoInter.CrearCodigoInter(null, auxSemantico, arbol); CodigoInter.CodeGen(arbol, null); resultadoCodigo = CodigoInter.extraerResultados(); for (int i = 0; i < resultadoCodigo.Count; i++) { String actual = resultadoCodigo.ElementAt(i); codigointermedio.Text += actual + "\n"; } } /* * //Programa para ejecutar el comando externo * string cadena = lanzaProceso(@".\Program.exe", rutaArchivo); * char caracter = '|'; * string[] resTokens = cadena.Split(caracter); * LexicoTextBox.Text = resTokens[0]; * ErroresTextBox.Text = resTokens[2]; */ }