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); }
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); }
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); }