示例#1
0
        public void primerAfn(string a)
        {
            //AFN result = new Proyecto_1.AFN();
            Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo
            Class_nodos f = new Class_nodos(); f.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo

            i.addTransicion(new Class_transiciones(a, f.getContadorNodo().ToString())); // agrego una transicion hacia el nodo final de este afn
            i.setNext1(f);
            this.inicio = i; this.final = f;
        }
示例#2
0
        public AFN primer(string a)
        {
            AFN         result = new Proyecto_1.AFN();
            Class_nodos i      = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo
            Class_nodos f      = new Class_nodos(); f.aumentarcount(); i.setTipoNodo("afn"); // le da numeracion al nodo

            i.addTransicion(new Class_transiciones(a, f.getContadorNodo().ToString()));      // agrego una transicion hacia el nodo final de este afn
            i.setNext1(f);
            result.setInicio(i); result.setFinal(f);

            return(result);
        }
示例#3
0
        //   public void positiva_Cadena(string a)
        // {
        //    AFN klee = new Proyecto_1.AFN();
        //   klee.kleene_Cadena(a);                 //aca hago un afn con aux* que es la cerradura de kleen
        //  concatenar_afCadena(a,klee);
        //}



        ///////////////////////////////////////////////////////////////////cerradura  ?

        //funciona pero en el proyecto nos piden que convirtamos el ?  de la siguiente manera |a£ una alter con el afn y £
        //public void ceroUno_af(AFN a)
        //{
        //  Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno");// le da numeracion al nodo
        // Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno"); // le da numeracion al nodo
        // i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));//punteros de i
        // i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));//punteros de a.final
        // i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); // hago una trans del inicial al final
        //this.inicio = i; this.final = f;
        //}

        //public void ceroUno_C(string aa)
        //{
        //  AFN a = new Proyecto_1.AFN();
        //a.primerAfn(aa);
        // Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno");// le da numeracion al nodo
        // Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno"); // le da numeracion al nodo
        // i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));//punteros de i
        // i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));//punteros de a.final
        // i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); // hago una trans del inicial al final
        // this.inicio = i; this.final = f;
        // }

        public void ceroUno_af(AFN a)
        {
            Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroUno");                                                               // le da numeracion al nodo
            Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroUno");                                                               // le da numeracion al nodo

            i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                                     //punteros de i
            i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));                                                                 //punteros de i hacia el final porque es ?
            i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final
            this.inicio = i; this.final = f;
        }
示例#4
0
        ////////////////////////////// cerradura positiva

        //funciona bien solo que en el proyecto nos piden transformar la positiva como un  .a*a que es lo mismo
        public void positiva_af(AFN a)
        {
            Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("unoVarios");                                                             // le da numeracion al nodo
            Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("unoVarios");                                                             // le da numeracion al nodo

            i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                                     //punteros de i
            i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final
            a.getFinal().addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                          // hago una trans del a.final al a.inicio
            this.inicio = i; this.final = f;
        }
示例#5
0
        public void alter_afaf(AFN a, AFN b)
        {
            Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("alter");                                                                    // le da numeracion al nodo
            Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("alter");                                                                    // le da numeracion al nodo

            i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                                        //punteros de i
            i.addTransicion(new Class_transiciones("£", b.getInicio().getContadorNodo().ToString()));                                                        //punteros de i
            i.setNext1(a.getInicio());  a.getFinal().setNext1(f);   a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final
            i.setNext2(b.getInicio());  b.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));                             //punteros de a.final
            //b.getFinal().setNext1(f); //tal vez de error al recorrer
            this.inicio = i; this.final = f;
        }
示例#6
0
        public void kleene_Cadena(string aa)
        {
            AFN a = new Proyecto_1.AFN();

            a.primerAfn(aa);

            Class_nodos i = new Class_nodos(); i.aumentarcount(); i.setTipoNodo("ceroVarios");                                                            // le da numeracion al nodo
            Class_nodos f = new Class_nodos(); f.aumentarcount(); f.setTipoNodo("ceroVarios");                                                            // le da numeracion al nodo

            i.addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                                     //punteros de i
            i.addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString()));                                                                 //punteros de i
            i.setNext1(a.getInicio()); a.getFinal().setNext1(f); a.getFinal().addTransicion(new Class_transiciones("£", f.getContadorNodo().ToString())); //punteros de a.final
            a.getFinal().addTransicion(new Class_transiciones("£", a.getInicio().getContadorNodo().ToString()));                                          // hago una trans del a.final al a.inicio
            this.inicio = i; this.final = f;
        }
示例#7
0
        public List <Class_nodos> NodosExpresiones()
        {
            List <Class_nodos> result = new List <Class_nodos>(); //genero esta lista para separar los id de las expresiones
            string             opera  = getDato();                ///agarro el string de expresiones

            char[] cadena     = opera.ToCharArray();
            string concatenar = "";

            for (int i = 0; i < opera.Length; i++)
            {
                if (cadena[i] == '.' || cadena[i] == '|' || cadena[i] == '?' || cadena[i] == '*' || cadena[i] == '+')
                {
                    if (concatenar.Length > 1)
                    {
                        Class_nodos b = new Class_nodos(); b.setDato(concatenar); result.Add(b); concatenar = "";
                    }
                    concatenar = "" + cadena[i];
                    Class_nodos a = new Class_nodos(); a.setDato(concatenar);
                    if (cadena[i] == '|')
                    {
                        a.setId("Binario"); a.setTipoNodo("alter");
                    }
                    else if (cadena[i] == '.')
                    {
                        a.setId("Binario"); a.setTipoNodo("concatenar");
                    }
                    else if (cadena[i] == '?')
                    {
                        a.setId("Unario"); a.setTipoNodo("ceroUno");
                    }
                    else if (cadena[i] == '*')
                    {
                        a.setId("Unario"); a.setTipoNodo("ceroVarios");
                    }
                    else if (cadena[i] == '+')
                    {
                        a.setId("Unario"); a.setTipoNodo("unoVarios");
                    }

                    result.Add(a);
                    concatenar = "";
                }
                if (cadena[i] == '"')
                {
                    if (concatenar.Length > 1)
                    {
                        Class_nodos b = new Class_nodos(); b.setDato(concatenar); result.Add(b); concatenar = "";
                    }
                    i++;
                    for (int j = 0; j < opera.Length; j++)
                    {
                        if (cadena[i] == '"')
                        {
                            break;
                        }
                        concatenar = concatenar + cadena[i];
                        i++;
                    }
                    Class_nodos a = new Class_nodos(); a.setDato(concatenar); a.setId("op"); a.setTipoNodo("op"); concatenar = "";
                    result.Add(a);
                }
                if (cadena[i] == '{')
                {
                    if (concatenar.Length > 1)
                    {
                        Class_nodos b = new Class_nodos(); b.setDato(concatenar); result.Add(b); concatenar = "";
                    }
                    i++;
                    for (int j = 0; j < opera.Length; j++)
                    {
                        if (cadena[i] == '}')
                        {
                            break;
                        }
                        concatenar = concatenar + cadena[i];
                        i++;
                    }
                    Class_nodos a = new Class_nodos(); a.setDato(concatenar); a.setId("op"); a.setTipoNodo("op"); concatenar = "";
                    result.Add(a);
                }

                if (cadena[i] != '.' || cadena[i] != '|' || cadena[i] != '?' || cadena[i] != '*' || cadena[i] != '+')
                {
                    concatenar = concatenar + cadena[i];
                }
                if (cadena[i] == '.' || cadena[i] == '|' || cadena[i] == '?' || cadena[i] == '*' || cadena[i] == '+' || cadena[i] == '}' || cadena[i] == '"')
                {
                    concatenar = "";
                }
            }

            return(result);
        }