private bool existEstado(Transiciones transicion, String estado, List <Estados> estadosExistentes) { bool exist = false; if (estado.Contains(vacio) || estado.ToCharArray()[0] == ',') { return(true); } foreach (Estados estadosExistente in estadosExistentes) { if (estadosExistente.estado == (estado)) { return(true); } else if (estado.Length == estadosExistente.estado.Length) { exist = esIgualEstado(estado, estadosExistente.estado); if (exist) { transicion.nextstate = (estadosExistente.estado); } } } return(exist); }
public Transiciones[] getalltransicionesDFA() { List <Transiciones> tnDFA = new List <Transiciones>(); List <Estados> e_exis = new List <Estados>(); Estados eta = buscarEstado(estd_inicial); foreach (string t in alfab) { string tmp_tr = ""; Transiciones[] tmp_alltran = eta.getAllTrancionesConEntry(t); for (int i = 0; i < tmp_alltran.Length; i++) { tmp_tr += tmp_alltran[i].nextstate; if (i != tmp_alltran.Length - 1) { tmp_tr += ","; } } tnDFA.Add(new Transiciones(eta.estado, t, tmp_tr)); } e_exis.Add(eta); while (getNuevoEstado(e_exis, tnDFA) != null) { Transiciones trans = getNuevoEstado(e_exis, tnDFA); string tmp_find = vacio; foreach (string altp in alfab) { tmp_find = gettransicion(trans.nextstate.Split(','), altp); if (tmp_find.ToCharArray()[0] == ',') { tmp_find = tmp_find.Substring(1, tmp_find.Length - 1); } tnDFA.Add(new Transiciones(trans.nextstate, altp, tmp_find)); } if (trans.nextstate != (vacio) || trans.nextstate == ("")) { e_exis.Add(new Estados(trans.nextstate)); } } if (existenTransicionVacias(tnDFA)) { addnewstatedeath(tnDFA, e_exis); } DFASTATES = e_exis.ToArray(); return(tnDFA.ToArray()); }