public void MontaCombo(Automato at) { foreach (Estado e in at.Estados.Values) { cmbEstDest.Items.Add(e); } }
public static Transicao EditaTransicao(Transicao t, Automato aut) { AlteraTransicao at = new AlteraTransicao(); at.MontaCombos(aut); if (t != null) { at.cmbEstOr.SelectedItem = t.EstadoOrigem; // at.cmbEstDest.SelectedItem = t.EstadoDestino; at.cmbSimbolo.SelectedItem = t.Simbolo; } at.ShowDialog(); if (at.Ok) { if (t == null) { t = new Transicao(); } t.EstadoOrigem = (Estado)at.cmbEstOr.SelectedItem; // t.EstadoDestino = (Estado)at.cmbEstDest.SelectedItem; t.Simbolo = (Simbolo)at.cmbSimbolo.SelectedItem; return(t); } else { return(null); } }
/* * public static Transicao getNewTransicao(Automato aut) * { * AlteraTransicao at = new AlteraTransicao(); * at.MontaCombos(aut); * at.ShowDialog(); * return at.transicao; * }*/ public void MontaCombos(Automato at) { foreach (Estado e in at.Estados.Values) { cmbEstOr.Items.Add(e); cmbEstDest.Items.Add(e); } foreach (Simbolo s in at.Alfabeto.Values) { cmbSimbolo.Items.Add(s); } }
private void abrirToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog sfd = new OpenFileDialog(); sfd.Filter = "XML Files|*.xml"; sfd.ShowDialog(); if (sfd.FileName != null && sfd.FileName != "") { Serializer s = new Serializer(); SaveDataAutomato sd = (SaveDataAutomato)s.Busca(sfd.FileName, typeof(SaveDataAutomato)); AutomatoInstanciado = sd.ConvertSaveDataAutomato(sd); AtualizaAutomato(); } }
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); }
private void btnAFN_ANFDE_Click(object sender, EventArgs e) { try { TrasnformaAFND_AFD t = new TrasnformaAFND_AFD(); t.AutomatoOriginal = AutomatoInstanciado; t.Tentativa3(); AutomatoInstanciado = t.AutomatoNovo; AtualizaAutomato(); } catch (Exception err) { MessageBox.Show(err.Message); } }
public Automato Convert(Automato original) { if (original == null || original.EstadoInicial == null) { throw new Exception("Estado inicial não definido."); } AutomatoOriginal = original; Estado ini = original.EstadoInicial; AutomatoNovo = new Automato(); //A única coisa que vem do automato anterior é o estado inicial. //O resto deve ser criado na medida do necessário // ini.EstadosOrigem.Add(ini.Nome); return(null); }
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 void Tentativa3() { AutomatoNovo = new Automato(); AutomatoNovo.Alfabeto = AutomatoOriginal.Alfabeto; if (AutomatoOriginal.EstadoInicial == null) { throw new Exception("Estado inicial não definido."); } Estado novoini = new Estado(AutomatoOriginal.EstadoInicial.Nome); novoini.isInicial = true; novoini.EstadosUnificados.Add(novoini.Nome); EstadosNovos.Add(novoini.Nome, novoini); AutomatoNovo.EstadoInicial = novoini; ProxEst1(novoini); AutomatoNovo.Estados = EstadosNovos; }
public SaveDataAutomato ConvertAutomato(Automato aut) { SaveDataAutomato sa = new SaveDataAutomato(); foreach (Estado e in aut.Estados.Values) { sa.Estados.Add(e.Nome); if (e.isFinal) { sa.EstadosFinais.Add(e.Nome); } foreach (Transicao t in e.Transicoes.Values) { SaveDataTransicao st = new SaveDataTransicao(); st.EstadoOrigem = e.Nome; foreach (Estado ee in t.EstadosDestino) { st.EstadosDestino.Add(ee.Nome); } st.Simbolo = t.Simbolo.simbolo; sa.Transicoes.Add(st); } } if (aut.EstadoInicial != null) { sa.EstadoInicial = aut.EstadoInicial.Nome; } foreach (Simbolo s in aut.Alfabeto.Values) { sa.Alfabeto.Add(s.simbolo); } return(sa); }
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); }
private void novoToolStripMenuItem_Click(object sender, EventArgs e) { AutomatoInstanciado = new Automato(); AtualizaAutomato(); }