示例#1
0
        public ListaThomson UnionI()
        {
            ListaThomson Pila = new ListaThomson();

            NodoThomson Iniciovacio = new NodoThomson("epsilon", "or");
            NodoThomson Finalvacio  = new NodoThomson("epsilon", "fin_or");

            NodoThomson vacio3 = new NodoThomson("epsilon");
            NodoThomson vacio2 = new NodoThomson("epsilon");
            NodoThomson vacio  = new NodoThomson("epsilon");

            if (aux1.GetTipo() == "unica")
            {
                Iniciovacio.sig1 = aux1.GetInicio();
                Iniciovacio.sig2 = vacio3;

                aux1.GetFinal().sig1 = vacio;
                vacio3.sig1 = vacio2;
                vacio.sig1  = Finalvacio;
                vacio2.sig1 = Finalvacio;
            }
            else if (aux1.GetTipo() == "doble")
            {
                Iniciovacio.sig1 = aux1.GetInicio();
                Iniciovacio.sig2 = vacio3;

                aux1.GetFinal().sig1 = Finalvacio;
                vacio3.sig1 = vacio2;
                vacio2.sig1 = Finalvacio;
            }

            Pila.setInicio(Iniciovacio);
            Pila.setTFinal(Finalvacio);
            return(Pila);
        }
        public ListaThomson Unir()
        {
            NodoThomson vacio       = new NodoThomson("epsilon");
            NodoThomson Iniciovacio = new NodoThomson("epsilon");

            ListaThomson Pila       = new ListaThomson();
            NodoThomson  Finalvacio = new NodoThomson("epsilon");

            if (hijounico.GetTipo() == "unica")
            {
                Iniciovacio.sig1 = hijounico.GetInicio();
                hijounico.GetFinal().sig1 = vacio;
                vacio.sig2       = hijounico.GetInicio();
                vacio.sig1       = Finalvacio;
                Iniciovacio.sig2 = Finalvacio;
                Pila.setTipo("doble");
                Pila.setInicio(Iniciovacio);
                Pila.setTFinal(Finalvacio);
            }
            else if (hijounico.GetTipo() == "doble")
            {
                Iniciovacio.sig1 = hijounico.GetInicio();
                hijounico.GetFinal().sig2 = hijounico.GetInicio();
                hijounico.GetFinal().sig1 = vacio;

                Iniciovacio.sig2 = vacio;
                Pila.setInicio(Iniciovacio);
                Pila.setTFinal(vacio);
            }
            else if (hijounico.GetInicio().GetTranscision() == "or")
            {
                Iniciovacio.sig1 = hijounico.GetInicio();

                Iniciovacio.sig2 = Finalvacio;
                hijounico.GetInicio().sig2 = Finalvacio;
                hijounico.GetFinal().sig1  = Finalvacio;

                hijounico.GetFinal().sig2 = hijounico.GetInicio();

                Pila.setInicio(Iniciovacio);
                Pila.setTFinal(Finalvacio);
            }
            return(Pila);
        }
示例#3
0
        public ListaThomson Union()
        {
            ListaThomson Pila        = new ListaThomson();
            NodoThomson  vacio       = new NodoThomson("epsilon");
            NodoThomson  Iniciovacio = new NodoThomson("epsilon");
            NodoThomson  Finalvacio  = new NodoThomson("epsilon");

            if (aux1.GetTipo() == "unica")
            {
                Iniciovacio.sig1 = aux1.GetInicio();
                aux1.GetFinal().sig1 = vacio;
                vacio.sig2 = aux1.GetInicio();
                vacio.sig1 = Finalvacio;

                Pila.setTipo("doble");
                Pila.setInicio(Iniciovacio);
                Pila.setTFinal(Finalvacio);
            }
            else if (aux1.GetTipo() == "doble")
            {
                Iniciovacio.sig1 = aux1.GetInicio();
                aux1.GetFinal().sig1 = Finalvacio;

                aux1.GetFinal().sig2 = aux1.GetInicio();

                Pila.setInicio(Iniciovacio);
                Pila.setTFinal(Finalvacio);
            }
            else if (aux1.GetInicio().GetTranscision() == "or")
            {
                aux1.GetFinal().sig1 = Finalvacio;

                aux1.GetFinal().sig2 = aux1.GetInicio();

                Pila.setInicio(aux1.GetInicio());
                Pila.setTFinal(Finalvacio);
            }



            return(Pila);
        }
        public ListaThomson junta()
        {// .a-.    . = nodo     letras = transiciones  si me entendes eso ?
            ListaThomson Pila = new ListaThomson();

            NodoThomson nulo = new NodoThomson("epsilon");

            hijo1.GetFinal().sig1 = hijo2.GetInicio();
            hijo2.GetFinal().sig1 = nulo;
            NodoThomson aux       = hijo1.GetInicio();

            /*    // apuntaste una lista string cada vez que recorro la lista
             *  //------a
             *  //------a
             *  // a ---------b
             */
            Pila.setInicio(hijo1.GetInicio());
            Pila.setTFinal(nulo);
            Pila.setTipo("doble");
            MessageBox.Show(Pila.GetInicio().GetTranscision());

            return(Pila);
        }
 public Asterisco(ListaThomson hijounico)
 {
     this.hijounico = hijounico;
 }
示例#6
0
 public void AgregarTerminal(ListaThomson aux1, ListaThomson aux2, string Tipo)
 {
     ListaThomson L = new ListaThomson();
 }
示例#7
0
 public ListaThomson(ListaThomson e1, string tipo)
 {
 }
 public Punto_Concatenacion(ListaThomson H1, ListaThomson H2)
 {// . a b
     this.hijo1 = H1;
     this.hijo2 = H2;
 }
示例#9
0
        public ListaThomson Union()
        {
            ListaThomson Pila = new ListaThomson();

            NodoThomson Iniciovacio = new NodoThomson("epsilon", "or");
            NodoThomson Finalvacio  = new NodoThomson("epsilon", "fin_or");

            NodoThomson vacio2 = new NodoThomson("epsilon");
            NodoThomson vacio  = new NodoThomson("epsilon");

            if (aux1.GetTipo() == "unica" && aux2.GetTipo() == "unica")
            {
                MessageBox.Show("si" + aux1.GetTipo() + aux2.GetTipo());

                Iniciovacio.sig1 = aux1.GetInicio();


                Iniciovacio.sig2 = aux2.GetInicio();
                aux1.GetFinal().sig1 = vacio;
                aux2.GetFinal().sig1 = vacio2;
                vacio.sig1  = Finalvacio;
                vacio2.sig1 = Finalvacio;
                Pila.setTipo("doble");
            }
            else if (aux1.GetTipo() == "doble" && aux2.GetTipo() == "doble")
            {
                MessageBox.Show("si es doble");
                Iniciovacio.sig1 = aux1.GetInicio();
                Iniciovacio.sig2 = aux2.GetInicio();
                aux1.GetFinal().sig1 = Finalvacio;
                aux2.GetFinal().sig1 = Finalvacio;
                Pila.setTipo("doble");
            }

            else if (aux1.GetTipo() == "doble" && aux2.GetTipo() == "unica")
            {
                MessageBox.Show("unica  y doble");
                Iniciovacio.sig1 = aux1.GetInicio();
                Iniciovacio.sig2 = aux2.GetInicio();
                aux1.GetFinal().sig1 = Finalvacio;
                aux2.GetFinal().sig1 = vacio2;
                vacio.sig1 = Finalvacio;
                Pila.setTipo("doble");
            }
            else if (aux1.GetTipo() == "unica" && aux2.GetTipo() == "doble")
            {
                MessageBox.Show("unica  y doble");
                Iniciovacio.sig1 = aux1.GetInicio();
                Iniciovacio.sig2 = aux2.GetInicio();
                aux1.GetFinal().sig1 = Finalvacio;
                aux2.GetFinal().sig1 = vacio2;
                vacio2.sig1 = Finalvacio;
                Pila.setTipo("doble");
            }
            else if (aux1.GetInicio().GetTranscision() == "or")
            {
                aux1.GetInicio().sig2 = Finalvacio;
                aux1.GetFinal().sig1  = Finalvacio;

                aux1.GetFinal().sig2 = aux1.GetInicio();

                Pila.setInicio(aux1.GetInicio());
                Pila.setTFinal(Finalvacio);
                Pila.setTipo("doble");
            }

            Pila.setInicio(Iniciovacio);

            Pila.setTFinal(Finalvacio);


            return(Pila);
        }
示例#10
0
 public OR(ListaThomson A1)
 {
     this.aux1 = A1;
 }
示例#11
0
 public OR(ListaThomson A1, ListaThomson A2)
 {
     this.aux1 = A1;
     this.aux2 = A2;
 }
示例#12
0
        public void Menu()
        {
            for (int i = Thomson.Count() - 1; i >= 0; i--)
            {
                Nodo aux = Thomson.ElementAt(i);


                if (aux.getT() == Nodo.TipoNodo.Terminal)
                {
                    NodoThomson  nuevo = new NodoThomson(aux.getDescripcion()); // ya guarda la transicion
                    ListaThomson li    = new ListaThomson(nuevo);
                    li.setTipo("unica");
                    PilaT.AddLast(li);
                }

                else if (aux.getT() == Nodo.TipoNodo.CerraduraA)
                {
                    ListaThomson aux1 = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();
                    Asterisco    A = new Asterisco(aux1);
                    ListaThomson R = A.Unir();
                    PilaT.AddLast(R);
                }
                else if (aux.getT() == Nodo.TipoNodo.CerraduraI)
                {
                    ListaThomson aux1 = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();
                    OR           A = new OR(aux1);
                    ListaThomson R = A.UnionI();
                    PilaT.AddLast(R);
                }

                else if (aux.getT() == Nodo.TipoNodo.Concatenacion)
                { // . ab
                  // sacar los 2 de la cima
                  // meter la lista resultante a la pila y cambiar el tipo

                    ListaThomson aux1 = new ListaThomson();
                    ListaThomson aux2 = new ListaThomson();
                    ListaThomson R    = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();
                    aux2 = PilaT.Last();
                    PilaT.RemoveLast();
                    Punto_Concatenacion concatena = new Punto_Concatenacion(aux1, aux2);
                    ListaThomson        resultado = concatena.junta();
                    PilaT.AddLast(resultado);
                    // lo meto a la pila
                }
                else if (aux.getT() == Nodo.TipoNodo.OR)
                {
                    ListaThomson aux1 = new ListaThomson();
                    ListaThomson aux2 = new ListaThomson();
                    ListaThomson R    = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();
                    aux2 = PilaT.Last();
                    PilaT.RemoveLast();
                    OR or = new OR(aux1, aux2);

                    R = or.Union();
                    PilaT.AddLast(R);
                }
                else if (aux.getT() == Nodo.TipoNodo.CerraduraP)
                {
                    ListaThomson aux1 = new ListaThomson();
                    ListaThomson aux2 = new ListaThomson();
                    ListaThomson R    = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();


                    Mas mas = new Mas(aux1);
                    R = mas.Union();

                    PilaT.AddLast(R);
                }
                else if (aux.getT() == Nodo.TipoNodo.CerraduraI)
                {
                    ListaThomson aux1 = new ListaThomson();
                    ListaThomson aux2 = new ListaThomson();
                    ListaThomson R    = new ListaThomson();
                    aux1 = PilaT.Last();
                    PilaT.RemoveLast();


                    Mas mas = new Mas(aux1);
                    R = mas.Union();

                    PilaT.AddLast(R);
                }
            }
        }
示例#13
0
 public Mas(ListaThomson aux1)
 {
     this.aux1 = aux1;
 }