示例#1
0
        void generarAFN(string grafica)
        {
            Graficador grafico = new Graficador();

            grafico.graficar(grafica, "secGrafica");
            pictureBox3.Image = GetCopyImage(rutaAbrir(secImagen, "secGrafica"));;
            secImagen++;
            movSec++;
        }
示例#2
0
        void generarTabla(string tabla)
        {
            Graficador grafico = new Graficador();

            grafico.graficar(tabla, "tabla");
            pictureBox2.Image = GetCopyImage(rutaAbrir(this.tabla, "tabla"));
            this.tabla++;
            movTabla++;
        }
示例#3
0
        void generarAFD(string grafica)
        {
            Graficador grafico = new Graficador();

            grafico.graficar(grafica, "primGrafica");
            pictureBox1.Image = GetCopyImage(rutaAbrir(primImagen, "primGrafica"));;
            primImagen++;
            movPrim++;
        }
示例#4
0
        private void CargarThomToolStripMenuItem_Click(object sender, EventArgs e)
        {
            /*------------LISTADO DE PENDIENTES:
             *  1. Ver que puchis pasa que mueren las expresiones al meter mas
             *  2. Arreglar la tabla de transiciones,poner los que son estados de aceptacion
             *      y tambien que la transicion corresponda a su columna;
             *  3. Ver donde rayos mostrar los reportes XML
             *  4. y...Ya?
             */
            string cadenaTexto = "";

            if (getTextBox() == null)
            {
                MessageBox.Show("Cree una pestaña para comenzar", "Alerta");
            }
            else
            {
                cadenaTexto = getTextBox().Text;

                if (cadenaTexto.Equals(""))
                {
                    MessageBox.Show("Ingrese una entrada valida", "Cadena vacia");
                }
                else
                {
                    pictureBox1.Image = null;
                    pictureBox1.Update();
                    pictureBox2.Image = null;
                    pictureBox2.Update();
                    pictureBox3.Image = null;
                    pictureBox3.Update();
                    consola = "";
                    lexemas.Clear();
                    Graficador grafico = new Graficador();
                    grafico.eliminarArchivos();
                    Thread.Sleep(1000);
                    funcionamiento(cadenaTexto);
                }
            }
        }
示例#5
0
        void funcionamiento(string entrada)
        {
            Lexico analisisLexico = new Lexico();

            lexemas = analisisLexico.analizar(entrada);

            /*foreach (var item in lexemas)
             * {
             *    consola += item.tipo + " ----> " + item.info+"\n";
             *
             * }
             * richTextBox1.Text = consola;
             */


            if (analisisLexico.getErrores() == 0)
            {
                Graficador grafico = new Graficador();
                grafico.eliminarArchivos();
                contadores();                   //Vuelve a colocar los contadores de imagenes en cero



                Arbol arbol = new Arbol();
                LinkedList <ExpresionRegular> expresiones;
                expresiones = arbol.analizar(lexemas);
                LinkedList <Lexema> evaluar = arbol.getEvaluar();
                conjuntos = arbol.getConjuntos();


                Thompson          thompson      = new Thompson();
                LinkedList <Nodo> listaThompson = new LinkedList <Nodo>();


                foreach (var item in expresiones)
                {
                    Nodo temp = thompson.AFN(item.nodo, item.cont);
                    generarAFN(AFN(temp));
                    listaThompson.AddLast(temp);
                }



                int cont = 0;
                foreach (var item in listaThompson)
                {
                    Subconjuntos        subconjuntos = new Subconjuntos();
                    LinkedList <Estado> estados      = subconjuntos.AFD(item.transiciones, expresiones.ElementAt(cont).terminales);
                    generarTabla(tablaTransiciones(estados));
                    generarAFD(AFD(estados));
                    Final temp = new Final(expresiones.ElementAt(cont).nombre, estados);
                    expresionesFinal.AddLast(temp);
                    cont++;
                }


                foreach (var item in evaluar)
                {
                    consola += item.evaluar + " -> " + item.info;
                    if (evaluarLexema(item.info, buscarFinal(item.evaluar)))
                    {
                        consola          += "  Correcto! \r";
                        richTextBox1.Text = consola;
                    }
                    else
                    {
                        consola          += "  Incorrecto... \r";
                        richTextBox1.Text = consola;
                    }
                }


                reiniciarMas();     //Reinicio variables utilizadas en la evaluación
                conjuntos.Clear();
                expresionesFinal.Clear();
            }
            else
            {
                generarPDF(lexemas);
                //MessageBox.Show("Entrada con errores", "Advertencia");
            }
        }