Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
             *  }
             * }
             */
        }
Ejemplo n.º 6
0
        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);
        }