Ejemplo n.º 1
0
        //Metodo que realiza la regla 3 de los AFD.
        public void Verel3()
        {
            AFD           nuevoest;
            Infoenla      nuevoen;
            List <Separa> listaux  = new List <Separa>();
            List <Separa> listaux2 = new List <Separa>();

            for (int x = 0; x < lreg.Count(); x++)
            {
                listaux.Add(lreg[x].coprod());
            }

            while (listaux.Count != 0)
            {
                listaux2 = Buscasim(listaux, listaux[0]);
                if (listaux2 != null)
                {
                    for (int x = 0; x < listaux2.Count; x++)
                    {
                        for (int i = 0; i < listaux.Count; i++)
                        {
                            if (Reglasim(listaux2[x], listaux[i]) == true)
                            {
                                listaux.RemoveAt(i);
                                break;
                            }
                        }
                    }
                    foreach (Separa r in listaux2)
                    {
                        r.derecha[0].moverpunto();
                    }
                    if (listaux2[0].derecha[0].tkanterior() != null)
                    {
                        nuevoest = ceds.buscaEstado(listaux2[0]);
                        if (nuevoest == null)
                        {
                            nuevoest = new AFD(listaux2, ceds);
                            ceds.agregaEstado(nuevoest);
                            nuevoen = new Infoenla(nuevoest, listaux2[0].derecha[0].tkanterior());
                            listaEnlaces.Add(nuevoen);
                            nuevoest.eval();
                        }
                        else
                        {
                            nuevoen = new Infoenla(nuevoest, listaux2[0].derecha[0].tkanterior());
                            listaEnlaces.Add(nuevoen);
                        }
                    }
                }
                else
                {
                    listaux.RemoveAt(0);
                }
            }
        }
Ejemplo n.º 2
0
 public Infoenla(AFD est, NT tk)
 {
     estAFD = est;
     token  = tk;
 }
Ejemplo n.º 3
0
 //Agrega un nuevo estado a la lista.
 public void agregaEstado(AFD nuevo)
 {
     nuevo.num = numestado;
     numestado++;
     estados.Add(nuevo);
 }