private void Analizar_Click(object sender, EventArgs e) { bool band = File.Exists(PATH + @"\errores.txt"); if (band) { File.Delete(PATH + @"\errores.txt"); } richTextBox2.Clear(); error = new AtraparErrores(ruta, richTextBox2); contenidoArchivo = richTextBox1.Text; string myString = contenidoArchivo; gramticSicEstandarLexer lex = new gramticSicEstandarLexer(new AntlrInputStream(myString + Environment.NewLine)); CommonTokenStream tokens = new CommonTokenStream(lex); gramticSicEstandarParser parser = new gramticSicEstandarParser(tokens); parser.RemoveErrorListeners(); lex.RemoveErrorListeners(); parser.AddErrorListener(error); lex.AddErrorListener(error); parser.programa(); /*Aqui se depliega un mensaje si hay o no errores*/ if (!error.TieneErrores()) { richTextBox2.Text = "Todo bien, todo correcto y yo que me alegro!!!"; } else { StreamReader sr = new StreamReader(PATH + @"\errores.txt"); richTextBox2.Text = sr.ReadToEnd(); sr.Close(); } TablaSimbolos(); }
private void TablaSimbolos() { AntlrInputStream input; gramticSicEstandarLexer lexer; CommonTokenStream tokens; gramticSicEstandarParser parser; Paso1 contador = new Paso1(); int contadorLineas = 0; List <string> cp = new List <string>(); string[] lineasTexto = contenidoArchivo.Split('\n'); foreach (string linea in lineasTexto) { input = new AntlrInputStream(linea); lexer = new gramticSicEstandarLexer(input); tokens = new CommonTokenStream(lexer); parser = new gramticSicEstandarParser(tokens); try { if (contadorLineas == 0) { contador.Visit(parser.inicio()); } else if (linea != "END" && !string.IsNullOrEmpty(linea)) { if (linea == "\tRSUB") { contador.CP += 3; } contador.Visit(parser.proposicion()); } else { parser.fin(); } } catch (Exception ex) { //File.AppendAllText(nombrearchivo+ ".err", ex.Message + '\t' + contadorLineas.ToString() + "\n"); richTextBox2.Text += ""; } cp.Add(contador.CP.ToString("X")); contadorLineas++; } Paso2 p2 = new Paso2(contador.TABSIM, Convert.ToInt32(cp[cp.Count - 1], 16) - Convert.ToInt32(cp[0], 16)); cp.Insert(0, cp[0]); contadorLineas = 0; int longitudRegistroT = 0; tablaPaso2.Rows.Clear(); List <string> codigoFuente = new List <string>(5); char[] delimiters = { ' ', '\t' }; foreach (string linea in lineasTexto) { input = new AntlrInputStream(linea); lexer = new gramticSicEstandarLexer(input); tokens = new CommonTokenStream(lexer); parser = new gramticSicEstandarParser(tokens); //parser.RemoveErrorListeners(); try { if (!string.IsNullOrEmpty(linea)) { codigoFuente.Insert(0, cp[contadorLineas]); codigoFuente.InsertRange(1, linea.Split(delimiters)); if (contadorLineas == 0) { codigoFuente.Insert(4, p2.Visit(parser.inicio())); archivoObjeto.Text = p2.registroH + "\n"; } else { codigoFuente.Insert(4, p2.Visit(parser.proposicion())); } tablaPaso2.Rows.Add(codigoFuente.ToArray()); codigoFuente = new List <string> { "" }; } } catch (Exception ex) { tablaPaso2.Rows.Add(codigoFuente.ToArray()); } contadorLineas++; } LlenaTablaTabSim(contador.TABSIM); CreaArchivos(p2.longitudPrograma); longProg = p2.longitudPrograma.ToString("X"); direccionIni = p2.dirInicio; tamProg.Text = p2.longitudPrograma.ToString("X"); foreach (DataGridViewRow row in tablaPaso2.Rows) { row.HeaderCell.Value = (row.Index + 1).ToString(); foreach (int i in error.ListaErrores) { if (row.Index == i) { tablaPaso2[tablaPaso2.ColumnCount - 1, i - 1].Value = "error"; } } } if (!contador.formato4) { RegistrosXe.Visible = false; GeneraRegistroT(); GeneraRegistroE(); CrearArchivoRegistro(); } else { tablaPaso2.Columns[tablaPaso2.Columns.Count - 1].Visible = false; RegistrosXe.Visible = true; } }