private void button6_Click(object sender, EventArgs e) { if (numeroExpresion >= 0) { if (ExpresionRegular[numeroExpresion, 1] != null) { AFND automata = new AFND(ExpresionRegular[numeroExpresion, 1]); automata.convertidorPolacaSimplificada(); //GRaficar el AFD GraficarAFD gaficar = new GraficarAFD(AFD.getTablaAFD(), Transformador.getTablaAceptaciones()); gaficar.Graficar(); gaficar.abrirgrafo(); MostrarImagen(); mostrarEnTabla(AFD.getTablaAFD()); VerificadorDeLexemas vl = new VerificadorDeLexemas(); richTextBox1.Text = vl.validarLexema(Analisador_Lexico.getLexemas(), AFD.getTablaAFD(), Analisador_Lexico.getConjuntos(), Transformador.getTablaAceptaciones(), ExpresionRegular[numeroExpresion, 0]); AFD.setTablaAFD_Resetear(); AFND.setTablaDeS_Resetear(); Transformador.setTablaAceptacionBorrar(); } } numeroExpresion++; }
public void CreacionTablaAFD() { TablaAFD[0, 0] = "AFD"; for (int i = 1; i < TablaCerraduras.GetLength(0); i++) //For para colocar nodos { if (TablaCerraduras[i - 1, 1] != null) { TablaAFD[i, 0] = TablaCerraduras[i - 1, 1]; } } int k = 1; for (int i = 0; i < TablaMovimientos.GetLength(0); i++) //for para colocar las transiciones { if (TablaMovimientos[i, 1] != null) { string valorA = ""; for (int h = 0; h < AFND.getTablaDeS().GetLength(0); h++) { if (AFND.getTablaDeS()[h, 0] != null && AFND.getTablaDeS()[h, 0] == TablaMovimientos[i, 1]) { valorA = AFND.getTablaDeS()[h, 1]; } } bool existe = false; for (int j = 0; j < TablaAFD.GetLength(1); j++) { if (TablaAFD[0, j] == valorA) { existe = true; //TablaMovimientos[i, 1] } } if (!existe) { TablaAFD[0, k] = valorA; k++; } // break; } } for (int i = 0; i < TablaMovimientos.GetLength(0); i++) //for buscar nodos y sus transiciones , { if (TablaMovimientos[i, 0] != null) { string nodoNombre = ""; string nodo = TablaMovimientos[i, 0]; string transicion = TablaMovimientos[i, 1]; string nodoApuntador = TablaMovimientos[i, 2]; int y = 0, x = 0; //Variables donde guardare las direcciones y = a, x= b for (int j = 0; j < TablaCerraduras.GetLength(0); j++) //For pra buscar el nombre del del nodo transicion { if (TablaCerraduras[j, 0] != null) { if (TablaCerraduras[j, 0] == nodoApuntador) { nodoNombre = TablaCerraduras[j, 1]; break; } } } for (int a = 1; a < TablaAFD.GetLength(0); a++) //buscar direccion de nodo en TAbla AFD { if (TablaAFD[a, 0].Equals(nodo)) { y = a; break; } } for (int b = 1; b < TablaAFD.GetLength(1); b++) //buscar direccion de transicion en TAbla AFD { for (int h = 0; h < AFND.getTablaDeS().GetLength(0); h++) { if (AFND.getTablaDeS()[h, 0] != null && AFND.getTablaDeS()[h, 0] == transicion) { transicion = AFND.getTablaDeS()[h, 1]; } } if (TablaAFD[0, b] != null && TablaAFD[0, b].Equals(transicion)) { x = b; TablaAFD[y, x] = nodoNombre; break; } } } } RecorrerArreglo <string>(TablaAFD); //Limpiador(); //borrar los datos }