private void compilarToolStripMenuItem_Click_1(object sender, EventArgs e) { dgvTokens.Rows.Clear(); string Entrada = txtCodigo.Text + " "; Lexico lexico = new Lexico(); //List<ERRORES> error = new List<ERRORES>(); List <Tokens> tokens = lexico.Detecta(Entrada); foreach (var item in tokens) { NodoLexemen.Add(crearNodo(item.getTipoToken().ToString(), item.getValor().ToString(), Convert.ToInt32(item.getRenglon()), Convert.ToInt32(item.getnumeroToken()))); } foreach (NodoLexema lexema in NodoLexemen) { if (lexema.Linea >= 400) { dgvErrores.Rows.Add(lexema.TextoLexema, lexema.Descripcion, lexema.Token, lexema.Linea); } else { dgvTokens.Rows.Add(lexema.TextoLexema, lexema.Descripcion, lexema.Token, lexema.Linea); } } Sintactico sintactico = new Sintactico(NodoLexemen); MessageBox.Show(sintactico.Termino); listBox1.Items.Add(ERRORES.Display()); NodoLexemen.Clear(); }
private void buttonCompilar_Click(object sender, EventArgs e) { Program.limpiarListas(); bool resultado = true; foreach (TabPage pestana in tabControl.TabPages) { String entrada = ((RichTextBox)pestana.Controls[0]).Text; bool res = Sintactico.analizar(entrada, pestana.Name); if (!res) { resultado = false; } } if (resultado) { AlertaAnalisis alerta = new AlertaAnalisis(); alerta.Show(); } else { AlertaErrores alerta = new AlertaErrores(); alerta.Show(); } Program.pestanaActual = tabControl.SelectedTab.Name; cerrarSubmenu(); }
/** * AGREGAR ERROR SINTACTICO */ public void agregarError(string lexema, string descripcion, int fila, int columna) { Sintactico token = new Sintactico(idSintactico, lexema, descripcion, columna, fila); arrayListSintactico.Add(token); idSintactico++; }
private void Button_Click(object sender, RoutedEventArgs e) { string entrada = txtEntrada.Text; Sintactico sin = new Sintactico(); sin.Analizar(entrada); }
static void Main(string[] args) { string text = System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\input", "entrada.txt")); Sintactico sintac = new Sintactico(); sintac.analizar(text); }
public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // analisis = new Sintactico(); }
void Button1Click(object sender, EventArgs e) { Semantico.variables.Clear(); string copia; int indice; analisis = new Sintactico(); analisis.setCadena(textBox1.Text); answerLabel.Text = analisis.Estado(); copia = textBox1.Text; listView1.Items.Clear(); listView2.Items.Clear(); foreach (Error a in analisis.erroresDeCodigo()) { ListViewItem lvi = new ListViewItem(); lvi.Text = (a.indice.ToString()); lvi.SubItems.Add(a.tipo); listView1.Items.Add(lvi); } indice = 0; string lineas = textBox1.Text; string[] partes = lineas.Split('\n'); foreach (string linea in partes) { copia = linea; copia = copia.Replace("\r", ""); indice++; ListViewItem lvi = new ListViewItem(); lvi.Text = ((indice).ToString()); lvi.SubItems.Add(copia); listView2.Items.Add(lvi); } foreach (Error a in analisis.erroresDeCodigo()) { listView2.Items[a.indice - 1].BackColor = Color.Red; } // foreach(Variable a in Semantico.variables){ // ListViewItem lvi = new ListViewItem(); // lvi.Text = (a.tipo); // lvi.SubItems.Add(a.nombre); // listView1.Items.Add(lvi); // } }
private void button1_Click(object sender, EventArgs e) { richTextBox2.Text = ""; String inputLanguage = richTextBox1.Text; Regex r = new Regex("\\n"); string[] lines = r.Split(inputLanguage); foreach (string l in lines) { ParseLine(l); } Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(richTextBox1.Text); ParseTreeNode resultado = arbol.Root; Sintactico.generarImagen(resultado); Sintactico.generarOtraImagen(resultado); if (resultado != null) { label1.Text = "La cadena es correcta"; dataGridView1.Visible = false; } else { label1.Text = "La cadena es incorrecta"; DataTable error = new DataTable(); error.Clear(); error.Columns.Add("No."); error.Columns.Add("Error"); error.Columns.Add("Fila"); error.Columns.Add("Columna"); DataRow fila; for (int i = 0; i < arbol.ParserMessages.Count; i++) { fila = error.NewRow(); fila["No."] = i + 1; fila["Error"] = arbol.ParserMessages[i].Message.ToString(); fila["Fila"] = (arbol.ParserMessages[i].Location.Line + 1).ToString(); fila["Columna"] = (arbol.ParserMessages[i].Location.Column + 1).ToString(); error.Rows.Add(fila); } dataGridView1.DataSource = error; dataGridView1.Visible = true; } }
private void buttonAnalizar_Click(object sender, EventArgs e) { resultado = Sintactico.analizar(richTextBoxCaja.Text); if (resultado != null) { try { MessageBox.Show("Analisis exitoso"); Sintactico.generarImagen(resultado); MessageBox.Show("AST generado"); } catch (Exception ex) { throw; } } }
private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e) { string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString(); string indiceparacontroleditort = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1); var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada)); foreach (var ctrl in controles) { var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort)); foreach (var ctrleditor in controleseditor) { string codigofuente = ctrleditor.Texto(); Lexico _lex = new Lexico(); Sintactico _sin = new Sintactico(); if (codigofuente.Length > 0) { List <Token> lista = new List <Token>(); lista = _lex.EjecutarLexico(codigofuente); int[] Tokensparasintactico = new int[500]; string [] lexemaParaSintactico = new string[500]; int cantidaddetokens = 0, ubicacion = 0; for (int i = 0; i < lista.Count; i++) { if (lista[i].token != -41 && lista[i].token != -39) { Tokensparasintactico[ubicacion] = lista[i].token; lexemaParaSintactico[ubicacion] = lista[i].lexema; cantidaddetokens++; ubicacion++; } } Tokensparasintactico[cantidaddetokens] = -99; //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1])); _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico); } else { MessageBox.Show("Escribe algo primero :v"); } } } }
private void AnalisisDeExtends(List <String> Extends) { foreach (TabPage t in tabControl1.TabPages) { foreach (String name in Extends) { if (name + ".lz" == t.Text) { Sintactico.raizDeArbol = null; Sintactico.errores.Clear(); TabPage aux = t; RichTextBox aux1 = (RichTextBox)t.Controls[0].Controls[1]; bool result = Sintactico.analizar(aux1.Text); if (result) { if (Sintactico.errores.Count() > 0)//SI EXISTEN ERRORES { foreach (ErrorEnAnalisis er in Sintactico.errores) { this.Errores.Add(er); } } Tabla_Simbolos tabla = new Tabla_Simbolos(Sintactico.raizDeArbol); tabla.generarme_tabla(); Lienzo nuevo = new Lienzo(tabla.getProcedimientos(), tabla.getFunciones(), tabla.getVariables(), tabla.getExtends(), tabla.getNombre(), tabla.getVisibilidad()); this.LienzosCompilados.Add(nuevo); AnalisisDeExtends(tabla.getExtends()); MeterDatosAListasGenerales(tabla.semanticos(), tabla.getTable()); } else { foreach (ErrorEnAnalisis er in Sintactico.errores)//ERRORES FALTALES { this.Errores.Add(er); } } } } } }
private void button1_Click(object sender, EventArgs e) { bool resultado = Sintactico.analizar(Entrada.Text); if (resultado) { Salida.Text = "Entrada valida"; } else { Salida.Text = "Entrada invalida"; } List <ErrorEnAnalisis> errores = Sintactico.err; foreach (ErrorEnAnalisis error in errores) { MessageBox.Show("ERROR: " + error.getError() + " Col: " + error.getColumna() + " Lin: " + error.getLinea()); } }
private void button2_Click(object sender, EventArgs e) { //Console.WriteLine("se clickeo el ejecutar"); Manejador.Maestra.getInstancia.clear(); string entrada = richTextBox1.Text; Sintactico sintactico = new Sintactico(); bool salida = sintactico.Analizar(entrada); if (salida) { var result = MessageBox.Show("Analisis correcto"); richTextBox2.Text = Maestra.getInstancia.getOutput(); } else { var result = MessageBox.Show("Analisis incorrecto"); richTextBox2.Text = Maestra.getInstancia.getOutput(); } Manejador.Maestra.getInstancia.ReccorerErrores(); }
private void analizar_entrada() { string ruta = @"C:\Users\Luis\Desktop\AST\prueba_2.xform"; // try { System.IO.StreamReader sr = new System.IO.StreamReader(ruta); analisis = new Sintactico("traduccion.xform"); ParseTreeNode raiz = analisis.analizar(sr.ReadToEnd()); sr.Close(); //manipulamos la raiz EjecucionXform ejecutar = new EjecucionXform(consola); ejecutar.capturarClases(raiz); ejecutar.capturarClaseImport(raiz); ejecutar.capturarClasePrincipal(); graf.generarImg(raiz, "prue_2"); Console.WriteLine("Archivo Cargado correctamente."); //}catch(Exception e){ //Console.WriteLine(e.Message); //} }
private void btnEjecutar_Click(object sender, EventArgs e) { Sintactico sintactico = new Sintactico(); Acciones acciones = new Acciones(); if (txtEntrada.Text != null) { ParseTreeNode raiz = sintactico.analizar(txtEntrada.Text.ToString()); if (raiz != null) { String salida = "Analisis Realizado correctamente \n Resultado =" + Convert.ToString(acciones.realizarAccion(raiz)); txtSalida.Text = salida; } else { txtSalida.Text = "Entrada no valida"; } } sintactico.analizar(txtEntrada.ToString()); }
public void analisis() { //bool resultado = Sintactico.analizarCHISON("");//enviar cadena de entrada //bool resultado = Sintactico.analizarLUP(""); tableuser.Columns.Add(new DataColumn("user", Type.GetType("System.String"))); tableuser.Columns.Add(new DataColumn("pass", Type.GetType("System.String"))); basesys.Tables.Add(tableuser); tablerol.Columns.Add(new DataColumn("user", Type.GetType("System.String"))); tablerol.Columns.Add(new DataColumn("db", Type.GetType("System.String"))); basesys.Tables.Add(tablerol); DataRow userAdmin = tableuser.NewRow(); userAdmin["user"] = "******"; userAdmin["pass"] = "******"; tableuser.Rows.Add(userAdmin); DataRow rolAdmin = tablerol.NewRow(); rolAdmin["user"] = "******"; rolAdmin["db"] = "System"; tablerol.Rows.Add(rolAdmin); Sintactico.basesDatos.Add(basesys); bool resultado = Sintactico.analizarCQL("List<int> persona = {2,3,4,5};"); if (resultado) { Console.WriteLine("Resultado exitoso"); } else { Console.WriteLine("No funciono"); } }
private void btnCompilar_Click(object sender, EventArgs e) { if (tabControl.TabCount != 0) { String ruta = tabControl.SelectedTab.Text; String texto = tabControl.SelectedTab.Controls["texto"].Text; String busqueda = "Pestaña"; StringComparison comparasion = StringComparison.InvariantCultureIgnoreCase; if (!ruta.StartsWith(busqueda, comparasion)) { String path = Path.GetDirectoryName(ruta); String archivo = Path.GetFileName(ruta); Sintactico sintactico = new Sintactico(); Sintactico.Analizar(texto); } } //bool resultado = Sintactico.Analizar(txtEntrada.Text); //if (resultado) { // txtConsola.Text = "La cadena es Correcta."; //} //else { // txtConsola.Text = "La cadena es Incorrecta."; //} }
public MostrarAST(ParseTreeNode most) { InitializeComponent(); pictureBox1.Image = Sintactico.getImage(most); }
private void XFORM_Load(object sender, EventArgs e) { graf = new DibujaArbol(); analisis = new Sintactico("traduccion.xform"); treeView1.AfterSelect += treeView1_AfterSelect; }
private void toolStripButton4_Click(object sender, EventArgs e) { if (tabControl1.TabPages.Count > 0) { this.Errores.Clear(); this.TablaGenera.Clear(); this.LienzosCompilados.Clear(); Sintactico.raizDeArbol = null; Sintactico.errores.Clear(); TabPage tab = (TabPage)tabControl1.TabPages[tabControl1.SelectedIndex]; RichTextBox EntradaAnalizar = (RichTextBox)tabControl1.TabPages[tabControl1.SelectedIndex].Controls[0].Controls[1]; bool restult = Sintactico.analizar(EntradaAnalizar.Text); if (restult) { Resultado.Text = "Válido"; Resultado.ForeColor = Color.Green; if (Sintactico.errores.Count > 0) { MessageBox.Show("El analisis del archivo aun contiene errores", "Errores en Entrada", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { Tabla_Simbolos tabla = new Tabla_Simbolos(Sintactico.raizDeArbol); tabla.generarme_tabla(); //List<Simbolo> simbolos = tabla.getTable(); //TablaSimbolosHTML reporte = new TablaSimbolosHTML(simbolos); //reporte.generarTablaHTML(); Lienzo l = new Lienzo(tabla.getProcedimientos(), tabla.getFunciones(), tabla.getVariables(), tabla.getExtends(), tabla.getNombre(), tabla.getVisibilidad()); this.LienzosCompilados.Add(l); AnalisisDeExtends(tabla.getExtends()); //Reporte re = new Reporte(); //re.ReporteDeErrores(tabla.semanticos(), "Errores"); MeterDatosAListasGenerales(tabla.semanticos(), tabla.getTable()); if (this.Errores.Count() > 0) { InfoErr.Text = "Existen Errores Semanticos"; } else { Ejecucion ej = new Ejecucion(this.LienzosCompilados, this.TablaGenera); AreaImagen nuevo = new AreaImagen(); nuevo.Show(); ej.IniciarEjecucion(); if (ej.getErrores().Count() > 0) { InfoErr.Text = "Existen Errores Semánticos"; foreach (ErrorEnAnalisis er in ej.getErrores()) { this.Errores.Add(er); } } else { InfoErr.Text = "Compilación Terminada"; this.TablaGenera = ej.getTablaNueva(); nuevo.Visible = true; } } /*MessageBox.Show("Lienzos Compilados: " + this.LienzosCompilados.Count()); * foreach (Lienzo h in this.LienzosCompilados) * { * h.ReporteDeLienzo(); * }*/ } } else { Resultado.Text = "Inválido"; MessageBox.Show("El analisis del archivo aun contiene errores sin recuperación", "Errores en Entrada", MessageBoxButtons.OK, MessageBoxIcon.Error); Resultado.ForeColor = Color.Red; } } else { MessageBox.Show("No hay Pestañas abiertas", "Error al Ejecutar", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btncompilar_Click(object sender, EventArgs e) { consola.Clear(); Sintactico.analizar(TextArea.Text); }
private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e) { string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString(); string indiceparacontroleditort = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1); var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada)); foreach (var ctrl in controles) { var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort)); foreach (var ctrleditor in controleseditor) { string codigofuente = ctrleditor.Texto(); Lexico _lex = new Lexico(); Sintactico _sin = new Sintactico(); if (codigofuente.Length > 0) { List <Token> lista = new List <Token>(); List <Token> listaTablaSimbolo = new List <Token>(); //var ObjArbol = new Arboles(MiLi) lista = _lex.EjecutarLexico(codigofuente); int[] Tokensparasintactico = new int[500]; string[] lexemaParaSintactico = new string[500]; int cantidaddetokens = 0, ubicacion = 0; for (int i = 0; i < lista.Count; i++) { if (lista[i].token != -41 && lista[i].token != -39) { Tokensparasintactico[ubicacion] = lista[i].token; lexemaParaSintactico[ubicacion] = lista[i].lexema; listaTablaSimbolo.Add(lista[i]); cantidaddetokens++; ubicacion++; } } Tokensparasintactico[cantidaddetokens] = -99; //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1])); TablaSimbolos.ListaErroresSemanticos = new List <ErrorSemanticoDGV>(); TablaSimbolos.TablaSimbolosClase = new Dictionary <string, NodoClase>(); _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico, listaTablaSimbolo); dgvErrores.DataSource = null; dgvErrores.Rows.Clear(); dgvTablaSimbolo.DataSource = null; dgvTablaSimbolo.Rows.Clear(); Arboles arbolSintactico = new Arboles(listaTablaSimbolo); arbolSintactico.CrearArbolSintacticoAbstracto(); if (TablaSimbolos.ListaErroresSemanticos.Count > 0) { dgvErrores.DataSource = TablaSimbolos.ListaErroresSemanticos; } else { dgvTablaSimbolo.DataSource = TablaSimbolos.ObtenerListaClases(); } } else { dgvTablaSimbolo.DataSource = ""; MessageBox.Show("Escribe algo primero :v"); } } } }
private void button1_Click(object sender, EventArgs e) { richTextBox2.Text = ""; richTextBox3.Text = "Analizando..."; Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(richTextBox1.Text); ParseTreeNode resultado = arbol.Root; Sintactico.generarImagen(resultado); if (resultado != null) { label1.Text = "La cadena es correcta"; Programa p = new Programa(richTextBox2, richTextBox3, resultado); if (erroresSem.Count == 0) { dataGridView1.Visible = false; } else { DataTable error = new DataTable(); error.Clear(); error.Columns.Add("No."); error.Columns.Add("Error"); error.Columns.Add("Fila"); error.Columns.Add("Columna"); DataRow filaa; StreamWriter sw = new StreamWriter("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/Reporte.html"); sw.WriteLine("<html>"); sw.WriteLine("<title>Reporte de Errores</title>"); sw.WriteLine("<body background=" + "\"" + "large-background-1024x724.jpg" + "\"" + ">"); sw.WriteLine("<h1><center>Reporte de Errores</center></h1>"); sw.WriteLine("<center><table border=\"2\">"); sw.WriteLine("<tr>"); sw.WriteLine("<th>No.</th>"); sw.WriteLine("<th>Error</th>"); sw.WriteLine("<th>Fila</th>"); sw.WriteLine("<th>Columna</th>"); sw.WriteLine("</tr>"); for (int i = 0; i < erroresSem.Count; i++) { filaa = error.NewRow(); filaa["No."] = i + 1; filaa["Error"] = "Semantico: " + erroresSem[i]; filaa["Fila"] = fila[i]; filaa["Columna"] = columna[i]; error.Rows.Add(filaa); sw.WriteLine("<tr>"); sw.WriteLine("<th>" + (i + 1) + "</th>"); sw.WriteLine("<th>" + "Semantico: " + erroresSem[i] + "</th>"); sw.WriteLine("<th>" + fila[i] + "</th>"); sw.WriteLine("<th>" + columna[i] + "</th>"); sw.WriteLine("</tr>"); } sw.WriteLine("</table></center>"); sw.WriteLine("</body>"); sw.WriteLine("</html>"); sw.Close(); dataGridView1.DataSource = error; dataGridView1.Visible = true; erroresSem.Clear(); fila.Clear(); columna.Clear(); } Bitmap myBitmap = new Bitmap("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/[Compi1]Proyecto2/imagenes/AST.png"); //Image im = Image.FromFile("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/[Compi1]Proyecto2/imagenes/AST.png"); myBitmap.SetResolution(20, 20); Bitmap pp = new Bitmap(myBitmap); Clipboard.SetImage(pp); richTextBox4.Paste(); } else { label1.Text = "La cadena es incorrecta"; DataTable error = new DataTable(); error.Clear(); error.Columns.Add("No."); error.Columns.Add("Error"); error.Columns.Add("Fila"); error.Columns.Add("Columna"); DataRow filaa; StreamWriter sw = new StreamWriter("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/Reporte.html"); sw.WriteLine("<html>"); sw.WriteLine("<title>Reporte de Errores</title>"); sw.WriteLine("<body background=" + "\"" + "large-background-1024x724.jpg" + "\"" + ">"); sw.WriteLine("<h1><center>Reporte de Errores</center></h1>"); sw.WriteLine("<center><table border=\"2\">"); sw.WriteLine("<tr>"); sw.WriteLine("<th>No.</th>"); sw.WriteLine("<th>Error</th>"); sw.WriteLine("<th>Fila</th>"); sw.WriteLine("<th>Columna</th>"); sw.WriteLine("</tr>"); int j = 0; for (int i = 0; i < arbol.ParserMessages.Count; i++) { filaa = error.NewRow(); filaa["No."] = i + 1; filaa["Error"] = arbol.ParserMessages[i].Message.ToString(); filaa["Fila"] = (arbol.ParserMessages[i].Location.Line + 1).ToString(); filaa["Columna"] = (arbol.ParserMessages[i].Location.Column + 1).ToString(); error.Rows.Add(filaa); j = i + 1; sw.WriteLine("<tr>"); sw.WriteLine("<th>" + j + "</th>"); sw.WriteLine("<th>" + arbol.ParserMessages[i].Message.ToString() + "</th>"); sw.WriteLine("<th>" + (arbol.ParserMessages[i].Location.Line + 1).ToString() + "</th>"); sw.WriteLine("<th>" + (arbol.ParserMessages[i].Location.Line + 1).ToString() + "</th>"); sw.WriteLine("</tr>"); } for (int i = 0; i < erroresSem.Count; i++) { filaa = error.NewRow(); filaa["No."] = j + 1; filaa["Error"] = "Semantico: " + erroresSem[i]; filaa["Fila"] = fila[i]; filaa["Columna"] = columna[i]; error.Rows.Add(filaa); sw.WriteLine("<tr>"); sw.WriteLine("<th>" + (j + 1) + "</th>"); sw.WriteLine("<th>" + "Semantico: " + erroresSem[i] + "</th>"); sw.WriteLine("<th>" + fila[i] + "</th>"); sw.WriteLine("<th>" + columna[i] + "</th>"); sw.WriteLine("</tr>"); } sw.WriteLine("</table></center>"); sw.WriteLine("</body>"); sw.WriteLine("</html>"); sw.Close(); dataGridView1.DataSource = error; dataGridView1.Visible = true; erroresSem.Clear(); fila.Clear(); columna.Clear(); } }