private AFN Alternancia(AFN operando1, AFN operando2) { Estado estadoInicial = new Estado(0); Transicion Opcion1 = new Transicion(estadoInicial, operando1.Inicial, "epsilon"); Transicion Opcion2 = new Transicion(estadoInicial, operando2.Inicial, "epsilon"); //Metiendo las transiciones estadoInicial.SetTransicionDer(Opcion2); estadoInicial.SetTransicionIzq(Opcion1); Estado estadoFinal = new Estado(6); //6 -> si fuera el mas simple existente Transicion Opcion1F = new Transicion(operando1.Final, estadoFinal, "epsilon"); Transicion Opcion2F = new Transicion(operando2.Final, estadoFinal, "epsilon"); //Metiendo las transiciones operando1.Final.SetTransicionIzq(Opcion1F); operando2.Final.SetTransicionIzq(Opcion2F); AFN alternancia = new AFN(); alternancia.Inicial = estadoInicial; alternancia.Final = estadoFinal; alternancia.Meter_EstNormales(operando1); alternancia.Meter_EstNormales(operando2); return(alternancia); }
private AFN CerraduraPositiva(AFN operando) { //Operando(operando.); //CerraduraKleen(operando); Estado estadoInicial = new Estado(0); Estado estadoFinal = new Estado(3); //3 -> si fuera el mas simple existente Transicion transicion = new Transicion(estadoInicial, operando.Inicial, "epsilon"); estadoInicial.SetTransicionIzq(transicion); //REPETICION Transicion repeticion = new Transicion(operando.Final, operando.Inicial, "epsilon"); //UNIENDO OPERANDO CON EL FINAL Transicion unionFinal = new Transicion(operando.Final, estadoFinal, "epsilon"); operando.Final.SetTransicionIzq(unionFinal); operando.Final.SetTransicionDer(repeticion); //CREANDO AFN AFN cerraduraPositiva = new AFN(); cerraduraPositiva.Inicial = estadoInicial; cerraduraPositiva.Final = estadoFinal; cerraduraPositiva.Meter_EstNormales(operando); return(cerraduraPositiva); }
private AFN Aparicion(AFN operando) { Estado estadoInicial = new Estado(0); Estado estadoFinal = new Estado(3); //3 -> si fuera el mas simple existente Transicion transicion = new Transicion(estadoInicial, operando.Inicial, "epsilon"); //QUE NO APAREZCA NADA Transicion inicial_final = new Transicion(estadoInicial, estadoFinal, "epsilon"); estadoInicial.SetTransicionIzq(transicion); estadoInicial.SetTransicionDer(inicial_final); //UNIENDO OPERANDO CON EL FINAL Transicion unionFinal = new Transicion(operando.Final, estadoFinal, "epsilon"); operando.Final.SetTransicionIzq(unionFinal); //CREANDO AFN AFN aparicion = new AFN(); aparicion.Inicial = estadoInicial; aparicion.Final = estadoFinal; aparicion.Meter_EstNormales(operando); return(aparicion); }