public void siguientes(List <int> numeros, Estado nuevoEstado) { List <int> estadosCerradura = new List <int>(); for (int i = 0; i < numeros.Count; i++) { NodoExpresion paraCerradura = buscarNodo(numeros.ElementAt(i)); if (paraCerradura != null) { cerradura(paraCerradura, estadosCerradura); } } mostrarCerradura(estadosCerradura); bool has = estadosCerradura.Any(x => x == ultimo.Id); if (has == true) { nuevoEstado.Aceptacion = true; } List <Transicion> trancisionesEstado = new List <Transicion>(); for (int i = 0; i < listaSimbolos.Count; i++) { List <int> estadosMueve = new List <int>(); for (int l = 0; l < estadosCerradura.Count; l++) { NodoExpresion paraMove = buscarNodo(estadosCerradura.ElementAt(l)); if (paraMove != null) { move(paraMove, listaSimbolos.ElementAt(i), estadosMueve); } } if (estadosMueve.Count > 0) { bool sn = existeCerradura(estadosMueve); if (sn) { int id = devolverId(estadosMueve); Transicion nuevaTransicion = new Transicion(); nuevaTransicion.Estado = id; nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString(); trancisionesEstado.Add(nuevaTransicion); } else { Estado apuntar = new Estado(); apuntar.EstadoInicial = j; j++; apuntar.Numeros = estadosMueve; transiciones.Add(apuntar); Transicion nuevaTransicion = new Transicion(); nuevaTransicion.Estado = apuntar.EstadoInicial; nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString(); trancisionesEstado.Add(nuevaTransicion); siguientes(estadosMueve, apuntar); } } } nuevoEstado.Transiciones = trancisionesEstado; }
public void generarTabla(List <NodoExpresion> listaNodos, List <int> numeros, List <Object> simbolos, String nombre, NodoExpresion final, ListaCircularGaleria lg, Galeria nuevoGaleria) { listaNodo = listaNodos; name = nombre; listaSimbolos = simbolos; ultimo = final; List <int> estadosCerradura = new List <int>(); for (int i = 0; i < numeros.Count; i++) { NodoExpresion paraCerradura = buscarNodo(numeros.ElementAt(i)); if (paraCerradura != null) { cerradura(paraCerradura, estadosCerradura); } } mostrarCerradura(estadosCerradura); Estado nuevoEstado = new Estado(); nuevoEstado.EstadoInicial = j; j++; nuevoEstado.Numeros = numeros; bool has = estadosCerradura.Any(x => x == ultimo.Id); if (has == true) { nuevoEstado.Aceptacion = true; } transiciones.Add(nuevoEstado); List <Transicion> trancisionesEstado = new List <Transicion>(); for (int i = 0; i < listaSimbolos.Count; i++) { List <int> estadosMueve = new List <int>(); for (int l = 0; l < estadosCerradura.Count; l++) { NodoExpresion paraMove = buscarNodo(estadosCerradura.ElementAt(l)); if (paraMove != null) { move(paraMove, listaSimbolos.ElementAt(i), estadosMueve); } } if (estadosMueve.Count > 0) { bool sn = existeCerradura(estadosMueve); if (sn) { int id = devolverId(estadosMueve); Transicion nuevaTransicion = new Transicion(); nuevaTransicion.Estado = id; nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString(); trancisionesEstado.Add(nuevaTransicion); } else { Estado apuntar = new Estado(); apuntar.EstadoInicial = j; j++; apuntar.Numeros = estadosMueve; transiciones.Add(apuntar); Transicion nuevaTransicion = new Transicion(); nuevaTransicion.Estado = apuntar.EstadoInicial; nuevaTransicion.Simbolo = listaSimbolos.ElementAt(i).ToString(); trancisionesEstado.Add(nuevaTransicion); siguientes(estadosMueve, apuntar); } } } nuevoEstado.Transiciones = trancisionesEstado; nuevoGaleria.Estados = transiciones; lg.insertar(nuevoGaleria); }