public EstadoAgrupado BuscaProxEstados(EstadoAgrupado e, Simbolo s, Automato aut) { EstadoAgrupado ret = new EstadoAgrupado(); foreach (Estado est in e.Estados) { /* * aut.getEstadosDestinos( * if (est.Transicoes.ContainsKey(s.simbolo)) { * foreach(Es est.Transicoes[s.simbolo].EstadosDestino * ret.AdicionaSeNovo( * } */ } return(null); }
public List <Estado> getEstadosDestinos(List <string> EstadosOrigem, Simbolo s) { List <Estado> ret = new List <Estado>(); foreach (string estado in EstadosOrigem) { foreach (Estado e in Estados[estado].getEstadosDestinos(s)) { if (!ret.Contains(e)) { ret.Add(e); } } } return(ret); }
public override bool Equals(object obj) { try { if (obj == null) { return(false); } Simbolo s = (Simbolo)obj; try { if (s.simbolo == simbolo) { return(true); } } catch (Exception) { //throw; } try { if (simbolo == (string)obj) { return(true); } } catch (Exception) { // throw; } } catch (Exception) { return(false); } return(false); }
public Automato ConvertSaveDataAutomato(SaveDataAutomato sa) { Automato aut = new Automato(); foreach (string s in sa.Alfabeto) { Simbolo si = new Simbolo(s); aut.Alfabeto.Add(s, si); } foreach (string estado in sa.Estados) { Estado e = new Estado(estado); e.isFinal = sa.EstadosFinais.Contains(estado); e.isInicial = sa.EstadoInicial == estado; aut.Estados.Add(estado, e); } foreach (Estado e in aut.Estados.Values) { foreach (SaveDataTransicao t in sa.Transicoes) { if (t.EstadoOrigem == e.Nome) { Transicao tr = new Transicao(e); tr.Simbolo = aut.Alfabeto[t.Simbolo]; foreach (string d in t.EstadosDestino) { tr.EstadosDestino.Add(aut.Estados[d]); } e.Transicoes.Add(tr.Simbolo.simbolo, tr); } } } if (sa.EstadoInicial != null && sa.EstadoInicial != "") { aut.EstadoInicial = aut.Estados[sa.EstadoInicial]; } return(aut); }
public Transicao getTransicao(Simbolo s, string nomeestadodest) { if (Transicoes.ContainsKey(s.simbolo + nomeestadodest)) { return(Transicoes[s.simbolo + nomeestadodest]); } else { return(null); } /* * foreach (Transicao t in Transicoes) * { * if (t.Simbolo.Equals(dataGridView1.Columns[lastColumnIdx].Name)) * { * found = true; * AlteraTransicao.EditaTransicao(t, AutomatoInstanciado); * AtualizaCell(t); * } * } */ }
public Estado ProxEst(Estado e, Simbolo s, Automato aut) { //Procura todos destinos para a consulta atual List <Estado> dest = aut.getEstadosDestinos(e.EstadosUnificados, s); bool EhFinal = false; foreach (Estado eee in dest) { if (eee.isFinal) { EhFinal = true; break; } } if (dest.Count == 0) { return(null); } //Gera o nome do novo estado string nomestados = getStringEstado(dest); Estado estadonovo; //Verifica se o novo estado já foi criado //Se ainda não foi, o novo estado é criado if (EstadosNovos.ContainsKey(nomestados)) { estadonovo = EstadosNovos[nomestados]; } else { estadonovo = new Estado(nomestados); } estadonovo.isFinal |= EhFinal; //Os estados unificados do pai são guardados no novo estado gerado. estadonovo.EstadosGerador_Pais = e.EstadosUnificados; //Os estados que foram referenciados para montar este são guardados. estadonovo.EstadosUnificados = getEstadosOrigem(dest); //As as transições do estado criador são apagadas. // e.Transicoes.Clear(); //Um única nova transição é criada Transicao nova = new Transicao(e); nova.EstadosDestino.Add(estadonovo);//O estado novo será destruido mais adiantes, corrigir as referências nova.Simbolo = s; //A transição é adicionada para o simbolo que está sendo pesquisado. e.Transicoes.Add(s.simbolo, nova); return(estadonovo); }