Exemplo n.º 1
0
        private Nodo cerraduraKleene(Nodo n)
        {
            Nodo nuevoN = n;

            contador++;
            Nodo n1 = new Nodo(contador, "epsilon", "transiciones");

            n1.setIzquierda(nuevoN);
            if (nuevoN.getTipo() == "transiciones" || nuevoN.getTipo() == "transicion")
            {
                while (nuevoN.getTipo() != "asignable")
                {
                    if (nuevoN.getTipo() == "transiciones")
                    {
                        nuevoN = nuevoN.getDerecha();
                    }
                    else
                    {
                        nuevoN = nuevoN.getIzquierda();
                    }
                }
            }
            else if (nuevoN.getTipo() == "operando")
            {
                contador++;
                nuevoN.Index = contador;
            }

            contador++;
            Nodo n2 = new Nodo(contador, "epsilon", "transiciones");

            contador++;
            Nodo n3 = new Nodo(contador, "", "asignable");

            if (nuevoN.getTipo() == "operando")
            {
                nuevoN.setTipo("transicion");
                nuevoN.setIzquierda(n2);
                n2.setIzquierda(nuevoN);
                n2.setDerecha(n3);
            }
            else if (nuevoN.getTipo() == "asignable")
            {
                nuevoN.changeNodo(n2);
                nuevoN.setIzquierda(n);
                nuevoN.setDerecha(n3);
            }

            n1.setDerecha(n3);

            return(n1);
        }
Exemplo n.º 2
0
        private Nodo concatenar(Nodo n, Nodo n1)
        {
            Nodo aux1 = n;
            Nodo aux2 = n1;

            while (aux1.getTipo() != "asignable" && aux1.getTipo() != "operando")
            {
                if (aux1.getTipo() == "transiciones")
                {
                    aux1 = aux1.getDerecha();
                }
                else
                {
                    aux1 = aux1.getIzquierda();
                }
            }
            if (aux1.getTipo() == "operando")
            {
                aux1.setTipo("transicion");
                aux1.setIzquierda(aux2);
            }
            else if (aux1.getTipo() == "asignable")
            {
                aux1.changeNodo(aux2);
            }
            contador++;
            Nodo n2 = new Nodo(contador, "", "asignable");

            while (aux1.getTipo() != "asignable" && aux1.getTipo() != "operando")
            {
                if (aux1.getTipo() == "transiciones")
                {
                    aux1 = aux1.getDerecha();
                }
                else
                {
                    aux1 = aux1.getIzquierda();
                }
            }
            if (aux1.getTipo() == "operando")
            {
                aux1.setTipo("transicion");
                aux1.setIzquierda(n2);
            }
            return(n);
        }
Exemplo n.º 3
0
        private Nodo disyuncion(Nodo n, Nodo n1)
        {
            contador++;
            Nodo inicio = new Nodo(contador, "epsilon", "transiciones");
            Nodo aux1   = n;
            Nodo aux2   = n1;

            inicio.setIzquierda(aux1);
            inicio.setDerecha(aux2);

            contador++;
            Nodo fin = new Nodo(contador, "", "asignable");

            contador++;
            Nodo aux3 = new Nodo(contador, "epsilon", "transicion");

            contador++;
            Nodo aux4 = new Nodo(contador, "epsilon", "transicion");

            while (aux1.getTipo() != "asignable" && aux1.getTipo() != "operando")
            {
                if (aux1.getTipo() == "transiciones")
                {
                    aux1 = aux1.getDerecha();
                }
                else
                {
                    aux1 = aux1.getIzquierda();
                }
            }
            if (aux1.getTipo() == "operando")
            {
                aux1.setTipo("transicion");
                aux1.setIzquierda(aux3);
                aux3.setIzquierda(fin);
            }
            else if (aux1.getTipo() == "asignable")
            {
                aux1.changeNodo(aux3);
                aux1.setIzquierda(fin);
            }
            //

            while (aux2.getTipo() != "asignable" && aux2.getTipo() != "operando")
            {
                if (aux2.getTipo() == "transiciones")
                {
                    aux2 = aux2.getDerecha();
                }
                else
                {
                    aux2 = aux2.getIzquierda();
                }
            }
            if (aux2.getTipo() == "operando")
            {
                aux2.setTipo("transicion");
                aux2.setIzquierda(aux4);
                aux4.setIzquierda(fin);
            }
            else if (aux2.getTipo() == "asignable")
            {
                aux2.changeNodo(aux4);
                aux2.setIzquierda(fin);
            }

            return(inicio);
        }