コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }