private void button1_Click(object sender, EventArgs e) { if (ValidarParametros(txtPunto.Text, cbGradoPertenencia.Text)) { this.Size = new Size(1400, 600); Controls.Remove(pv); double punto = double.Parse(txtPunto.Text); string pertenencia = cbGradoPertenencia.Text; if (rbDiscreto.Checked) { ConjuntoDifusoDiscreto conjuntoDiscreto = new ConjuntoDifusoDiscreto((int)punto, pertenencia); var valores = conjuntoDiscreto.ObtenerValores(); var segmentos = conjuntoDiscreto.ObtenerSegmentos(); var ecuaciones = conjuntoDiscreto.ObtenerEcuaciones(); pv = Graficador.Generar_Grafica(valores, segmentos, ecuaciones, "Discreto", (int)punto); Controls.Add(pv); } else if (rbContinuo.Checked) { ConjuntoDifusoContinuo conjuntoContinuo = new ConjuntoDifusoContinuo(punto, pertenencia); var valores = conjuntoContinuo.ObtenerValores(); var ecuacion = conjuntoContinuo.OtenerEcuacion(); var segmento = conjuntoContinuo.ObtenerSegmento(); pv = Graficador.Generar_Grafica(valores, segmento, ecuacion, "Continuo", punto); Controls.Add(pv); } } else { MessageBox.Show("Debe ingresar los parametros correctamente"); } }
//Grafico las Reglas Lexicas -> AFND private void graficarAFN_Reglas() { Graficador g = new Graficador(); foreach (var item in arch.reglas) { g.AFND_graficar(item.ruta_relativa, item.afn.listaEstados); } }
private void graficarAFN_Conjuntos_si() { Graficador g = new Graficador(); int i = 1; foreach (var item in arch.conjuntos) { contador = 0; Automata tempo = item.Value.getAFND_Conjuntos(); g.AFND_graficar("Conjunto_" + i + "_" + item.Value.nombre, tempo.start); i++; } }
private void btnAnalizar_Click(object sender, EventArgs e) { this.cbxExpresion.Items.Clear(); this.richConsola.Text = ""; CreatePage page = new CreatePage(); AnalizadorLexico analizadorLexico = new AnalizadorLexico(); ListaTk = analizadorLexico.analizar(tab.searchTxt()); //Optenemos la lista de tokens ListaErr = analizadorLexico.getListErr(); //Optenemos la lista de erros if (ListaErr.Count == 0) //En dado caso la lista de errores este vacia, podremos imprimir la lista de tokens { // xml.Tokens(ListaTk); page.pageTokens(ListaTk); AnalizarTokens analizarTK = new AnalizarTokens(ListaTk); analizarTK.analizarTokens(); foreach (var item in analizarTK.LstThompson) { Graficador graficador = new Graficador(); //* Gra gra = new Gra(); //* gra.graficar(item.Raiz.dot(), item.NameEr); //Mandamos el contenido del dot y el nombre que contendra el archivo(sera el mismo de la expresion) //* gra.abrirGrafo(); graficador.graficar(item.Raiz.dot(), item.NameEr); //Mandamos el contenido del dot y el nombre que contendra el archivo(sera el mismo de la expresion) // graficador.abrirGrafo(); graficador.graficar(item.Transiciones.dot(), item.NameEr + "-table"); // graficador.abrirGrafo(); graficador.graficar(item.Transiciones.dotAFD(), item.NameEr + "-AFD"); // graficador.abrirGrafo graficador.graficar(item.Transiciones.dotTableC(), item.NameEr + "-tableC"); File.WriteAllText(item.NameEr + ".xml", "Reporete Tokens de la expresion regular: " + item.NameEr + " \n \n"); this.cbxExpresion.Items.Add(item.NameEr); this.cbxExpresion.SelectedIndex = 0; } foreach (var item in analizarTK.LstLexamas) { richConsola.Text += "Lexema: " + item.Cadena + " de la expresion: " + item.ExpresionName + " es: " + item.Valido.ToString() + "\n"; xml.Tokens(item.LstToken, " Tokens de lexema \"" + item.Cadena + "\" \n", item.ExpresionName); xml.Errores(item.LstErrores, " Errores de lexema \"" + item.Cadena + "\" \n", item.ExpresionName); } MessageBox.Show("Analicis Correcto"); } else //de lo contrario imprimeremos la lista de errores { page.pageError(ListaErr); //xml.Errores(ListaErr); } }
//Grafico conjuntos private void graficarAFN_Conjuntos() { Graficador g = new Graficador(); int i = 1; foreach (var item in arch.conjuntos) { contador = 0; Automata tempo = item.Value.getAFND_Conjuntos(); tempo.listaEstados = new Dictionary <String, Nodo>(); this.enumerarEstadosAFN(tempo.start, tempo.listaEstados); g.AFND_graficar("Conjunto_" + i + "_" + item.Value.nombre, tempo.listaEstados); i++; } }
private void analizar_Click(object sender, EventArgs e) { try { string text = System.IO.File.ReadAllText(@"entrada.txt"); Gramatica grammar = new Gramatica(); LanguageData lenguaje = new LanguageData(grammar); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(text); ParseTreeNode raiz = arbol.Root; ConstructorAST builder = new ConstructorAST(); if (arbol.ParserMessages.Count == 0) { Graficador j = new Graficador(); j.graficar(arbol.Root); ConstructorAST an = new ConstructorAST(); AST auxArbol = an.Analizar(arbol.Root); if (auxArbol != null) { auxArbol.ejecutar(); } else { MessageBox.Show("No gener bien mi arbol aux en form1"); } } else { for (int i = 0; i < arbol.ParserMessages.Count; i++) { int fila = arbol.ParserMessages.ElementAt(i).Location.Line + 1; MessageBox.Show("USL-Mensaje: " + arbol.ParserMessages.ElementAt(i).Message + " Linea: " + fila + " Columna: " + arbol.ParserMessages.ElementAt(i).Location.Column); } MessageBox.Show("Hay errores lexicos o sintacticos\n El arbol de Irony no se construyo. Cadena invalida!\n"); } } catch (Exception ex) { MessageBox.Show(ex.Message + " " + ex.Source + " " + ex.ToString()); } }
private void Accciones(ParseTree arbol) { //------------------------> Objeto que grafica Graficador g = new Graficador(); g.Arbol_graficar(arbol); F1_Clasificar(arbol.Root.ChildNodes[0]); if (arch.errores.Count > 0) { return; } //------------------------> Aplicar Metodo Subconjuntos F2_A_MetodoSubconjuntos(); //------------------------> Generar AFD's }
private void load() { try { using (System.Windows.Forms.OpenFileDialog dialog = new OpenFileDialog()) { if (dialog.ShowDialog() == DialogResult.OK) { using (Stream st = File.Open(dialog.FileName, FileMode.Open)) { var binfor = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); G = (Graficador)binfor.Deserialize(st); PanelDibujo.Refresh(); actEtiquetas(); MessageBox.Show("CARGADO"); } } } } catch (Exception) { throw; } }
//private static LinkedList<Background> lista_background = new LinkedList<Background>(); //private static LinkedList<Figure> lista_figure = new LinkedList<Figure>(); //private static LinkedList<Design> lista_design = new LinkedList<Design>(); public static bool analizar1(String entrada) { Gramatica1 gramatica = new Gramatica1(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(entrada); ParseTreeNode raiz = arbol.Root; if (arbol.Root == null) { Analizadores.Error error; for (int i = 0; i < arbol.ParserMessages.Count(); i++) { String tipo; String mensaje = arbol.ParserMessages.ElementAt(i).Message; int line = arbol.ParserMessages.ElementAt(i).Location.Line;; int column = arbol.ParserMessages.ElementAt(i).Location.Column; if (arbol.ParserMessages.ElementAt(i).Message.Contains("Invalid")) { tipo = "Lexico"; error = new Error(tipo, mensaje, line, column); Form1.LErrores.Add(error); } else { tipo = "Sintactico"; error = new Error(tipo, mensaje, line, column); Form1.LErrores.Add(error); } } return(false); } else { Analizadores.Error error; for (int i = 0; i < arbol.ParserMessages.Count(); i++) { String tipo; String mensaje = arbol.ParserMessages.ElementAt(i).Message; int line = arbol.ParserMessages.ElementAt(i).Location.Line;; int column = arbol.ParserMessages.ElementAt(i).Location.Column;; if (arbol.ParserMessages.ElementAt(i).Message.Contains("Invalid")) { tipo = "Lexico"; error = new Error(tipo, mensaje, line, column); Form1.LErrores.Add(error); } else { tipo = "Sintactico"; error = new Error(tipo, mensaje, line, column); Form1.LErrores.Add(error); } } Graficador r = new Graficador(); r.graficar(arbol); recorrer(arbol.Root); //r.GraficarFlujo(); //Ejecucion.Ejecutor ejecutor = new Ejecucion.Ejecutor(); //ejecutor.ejecutarAST(arbol.Root); // ya tenes lo de consola //Form1 form = new Form1(); //String consola = ejecutor.salida.ToString(); return(true); } }
private void button1_Click(object sender, System.EventArgs e) { if (!TextArea.Text.Equals(string.Empty)) { Consola.Text = ""; Gramatica grammar = new Gramatica(); LanguageData lenguaje = new LanguageData(grammar); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(TextArea.Text); if (arbol.ParserMessages.Count != 0) { MessageBox.Show("Se han encontrado errores", "Errores", MessageBoxButtons.OK, MessageBoxIcon.Error); List <LogMessage> errores = arbol.ParserMessages; foreach (LogMessage error in errores) { if (error.Message.Contains("Sintax")) { Consola.AppendText("Error Sintactico, " + error.Message + " Linea: " + error.Location.Line + ", Columna: " + error.Location.Column); } else { Consola.AppendText("Error Lexico, " + error.Message + " Linea: " + error.Location.Line + ", Columna: " + error.Location.Column); } } } else { GeneradorAST generadorAST = new GeneradorAST(arbol); AST ast = generadorAST.arbol; Entorno ent = new Entorno(null); if (ast != null) { foreach (Instruccion ins in ast.Instrucciones) { ins.ejecutar(ent, ast); } if (ast.existeFuncion("main")) { Funcion main = ast.getFuncion("main"); foreach (Instruccion ins in main.instrucciones) { ins.ejecutar(ent, ast); } } else { MessageBox.Show("No se encontró la funcion main!!", "Errores", MessageBoxButtons.OK, MessageBoxIcon.Error); } Graficador j = new Graficador(); j.graficar(arbol.Root); } else { MessageBox.Show("Error generando el AST", "Errores", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
private void btnInterpretar_Click(object sender, EventArgs e) { if (!txtEntrada.Text.Equals(string.Empty)) { Gramatica grammar = new Gramatica(); LanguageData lenguaje = new LanguageData(grammar); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(txtEntrada.Text); if (arbol.ParserMessages.Count == 0) { Graficador j = new Graficador(); j.graficar(arbol.Root); ConstructorAST an = new ConstructorAST(); AST auxArbol = an.Analizar(arbol.Root); Entorno global = new Entorno(null); try { if (auxArbol != null) { foreach (Instruccion ins in auxArbol.Instrucciones) { if (ins is Funcion) { Funcion funcion = (Funcion)ins; global.agregar(funcion.Identificador, funcion); foreach (NodoAST instruccion in funcion.Instrucciones) { if (instruccion is DefinicionStruct) { DefinicionStruct crear = (DefinicionStruct)instruccion; crear.ejecutar(global, auxArbol); } } } if (ins is Declaracion) { Declaracion declaracion = (Declaracion)ins; declaracion.ejecutar(global, auxArbol); } if (ins is DefinicionStruct) { DefinicionStruct crear = (DefinicionStruct)ins; crear.ejecutar(global, auxArbol); } } foreach (Instruccion ins in auxArbol.Instrucciones) { if (ins is Main) { Main main = (Main)ins; foreach (NodoAST instruccion in main.Instrucciones) { if (instruccion is DefinicionStruct) { DefinicionStruct crear = (DefinicionStruct)instruccion; crear.ejecutar(global, auxArbol); } } Entorno local = new Entorno(global); main.ejecutar(local, auxArbol); } } } else { MessageBox.Show("El arbol de Irony no se construyo. Cadena invalida!\n"); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } else { // Aca deben gestionar esos errores :) MessageBox.Show("Hay errores lexicos o sintacticos\n El arbol de Irony no se construyo. Cadena invalida!\n"); } } }
private void compilarToolStripMenuItem_Click(object sender, EventArgs e) { if (tabsEntradas.TabCount > 0) { String entrada = obtenerEntrada().Replace("”", "\"").Replace("“", "\"").Replace("\r", "").Replace("\f", "").Trim(); if (entrada.Length > 0) { Importar.Reset(); Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(entrada); ParseTreeNode AST = arbol.Root; List <Instruccion> myAST = new List <Instruccion>(); if (AST != null) { myAST = new GeneradorAST().Analizar(AST); } bool debug = true; if (!debug) { if (AST != null) { Graficador g = new Graficador(); string s = g.GenerarGrafo(AST); StreamWriter archivo = new StreamWriter("debug.dot", false); archivo.Write(s); archivo.Close(); Process p = new Process(); p.StartInfo.FileName = @"C:\Program Files (x86)\Graphviz2.38\bin\dot.exe"; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.Arguments = "-Tpng debug.dot -o debug.png"; p.EnableRaisingEvents = true; p.Exited += (sender1, e1) => { Thread.Sleep(100); Process.Start("debug.png"); }; p.Start(); } } Stuff stuff = new Stuff(textBoxConsola); foreach (Irony.LogMessage error in parser.Context.CurrentParseTree.ParserMessages) { stuff.erroresLexicosSintacticos.Add(new Irony.LogMessage(error.Level, error.Location, ((((MyTab)tabsEntradas.SelectedTab).file != null) ? Path.GetFileName(((MyTab)tabsEntradas.SelectedTab).file) + ": " : "No File: ") + error.Message, error.ParserState)); } ejecutar(myAST, stuff); } else { MessageBox.Show("Entrada vacía", "Advertencia"); } } else { MessageBox.Show("No hay ni una tab para compilar", "Advertencia"); } }