Ejemplo n.º 1
0
        private NodoGrafo obtNod(NodoGrafo nt)
        {
            if (nt != null)
            {
                if (nt.izq != null)
                {
                    if (nt.eIzq != null)
                    {
                        return(nt);
                    }
                }

                if (nt.izq == null & nt.der == null)
                {
                    return(nt);
                }

                if (nt.tip != 'r')
                {
                    if (nt.izq != null)
                    {
                        return(obtNod(nt.izq));
                    }
                }

                if (nt.der != null)
                {
                    return(obtNod(nt.der));
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        private NodoGrafo plaRepCer(NodoGrafo datA)
        {
            NodoGrafo ni  = new NodoGrafo();
            NodoGrafo nta = obtUlt(datA);
            NodoGrafo nra = new NodoGrafo();
            NodoGrafo nf  = new NodoGrafo();

            ni.izq  = datA;
            ni.eIzq = nodEps();
            ni.der  = nf;
            ni.eDer = nodEps();
            ni.tip  = 'c';

            nta.izq = nra;

            nra.izq  = datA;
            nra.eIzq = nodEps();
            nra.der  = nf;
            nra.eDer = nodEps();
            nra.tip  = 'r';

            nf.tip = 'C';

            return(ni);
        }
Ejemplo n.º 3
0
        private NodoGrafo ter()
        {
            if (verificar(Token.CAD))
            {
                return(new NodoGrafo(-1, null, null, tem, null, 'e'));
            }

            else if (verificar(Token.NUM))
            {
                return(new NodoGrafo(-1, null, null, tem, null, 'e'));
            }

            else if (verificar(Token.SIM, "{"))
            {
                if (verificar(Token.IDE))
                {
                    Token t = tem;
                    if (verificar(Token.SIM, "}"))
                    {
                        return(new NodoGrafo(-1, null, null, t, null, 'e'));
                    }
                }
            }
            else
            {
                NodoGrafo st = sim();
                if (st != null)
                {
                    return(st);
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
        private NodoGrafo plaSel(NodoGrafo datA, NodoGrafo datB)
        {
            NodoGrafo ni  = new NodoGrafo();
            NodoGrafo nta = obtUlt(datA);
            NodoGrafo ntb = obtUlt(datB);
            NodoGrafo nra = new NodoGrafo();
            NodoGrafo nrb = new NodoGrafo();
            NodoGrafo nf  = new NodoGrafo();

            ni.izq  = datA;
            ni.eIzq = nodEps();
            ni.der  = datB;
            ni.eDer = nodEps();
            ni.tip  = 's';

            nta.izq = nra;
            ntb.izq = nrb;

            nra.izq  = nf;
            nra.eIzq = nodEps();
            nra.tip  = 'E';

            nrb.der  = nf;
            nrb.eDer = nodEps();
            nrb.tip  = 'E';

            nf.tip = 'S';

            return(ni);
        }
Ejemplo n.º 5
0
 public NodoGrafo(int ide, NodoGrafo izq, NodoGrafo der, Token eIzq, Token eDer, char tip)
 {
     this.ide  = ide;
     this.izq  = null;
     this.der  = null;
     this.eIzq = eIzq;
     this.eDer = eDer;
     this.tip  = tip;
 }
Ejemplo n.º 6
0
 /////////////////////////// CONSTRUCTOR
 public NodoGrafo()
 {
     this.ide  = -1;
     this.izq  = null;
     this.der  = null;
     this.eIzq = null;
     this.eDer = null;
     this.tip  = 'n';
 }
Ejemplo n.º 7
0
        private Boolean er()
        {
            NodoGrafo nt = ter();

            if (nt != null)
            {
                anaGra(nt);
                return(true);
            }

            return(false);
        }
Ejemplo n.º 8
0
        private NodoGrafo sim()
        {
            if (verificar(Token.SIM, "."))
            {
                NodoGrafo datA = ter();
                NodoGrafo datB = ter();
                if (datA != null & datB != null)
                {
                    return(plaCon(datA, datB));
                }
            }
            else if (verificar(Token.SIM, "|"))
            {
                NodoGrafo datA = ter();
                NodoGrafo datB = ter();
                if (datA != null & datB != null)
                {
                    return(plaSel(datA, datB));
                }
            }
            else if (verificar(Token.SIM, "*"))
            {
                NodoGrafo datA = ter();
                if (datA != null)
                {
                    return(plaRepCer(datA));
                }
            }
            else if (verificar(Token.SIM, "+"))
            {
                NodoGrafo datA = ter();
                NodoGrafo datB = new NodoGrafo(-1, null, null, datA.eIzq, null, 'e');
                if (datA != null)
                {
                    return(plaCon(datA, plaRepCer(datB)));
                }
            }
            else if (verificar(Token.SIM, "?"))
            {
                NodoGrafo datA = ter();
                NodoGrafo datB = new NodoGrafo(-1, null, null, nodEps(), null, 'e');
                if (datA != null)
                {
                    return(plaSel(datA, datB));
                }
            }

            return(null);
        }
Ejemplo n.º 9
0
        /////////////////////
        private NodoGrafo plaCon(NodoGrafo datA, NodoGrafo datB)
        {
            NodoGrafo nta = obtUlt(datA);
            NodoGrafo ntb = obtUlt(datB);
            NodoGrafo nf  = new NodoGrafo();

            datA.tip = 'a';

            nta.izq = datB;
            ntb.izq = nf;

            nf.tip = 'A';

            return(datA);
        }
Ejemplo n.º 10
0
        /////////////////////

        private void anaGra(NodoGrafo nt)
        {
            Console.WriteLine();
            ind2 = 0;
            numGra(nt);
            eliVac(nt);
            impGra(nt);

            tom.reNum();
            tom.anaLis();
            lisGra.Add(tom);
            tabEst.Add(tom.genTabTra());
            lisAut.Add(tom.genAut());


            ////////////////////////////////
            genGrafos();
        }
Ejemplo n.º 11
0
        private void numGra(NodoGrafo nt)
        {
            if (nt != null)
            {
                nt.ide = ind2++;

                if (nt.izq != null)
                {
                    if (nt.tip != 'r')
                    {
                        numGra(nt.izq);
                    }
                }

                if (nt.der != null)
                {
                    numGra(nt.der);
                }
            }
        }
Ejemplo n.º 12
0
        private void eliVac(NodoGrafo nt)
        {
            if (nt != null)
            {
                if (nt.izq != null)
                {
                    if (nt.izq.izq != null)
                    {
                        if (nt.izq.eIzq == null)
                        {
                            nt.izq = obtNod(nt.izq);
                        }
                    }
                }

                if (nt.der != null)
                {
                    if (nt.der.izq != null)
                    {
                        if (nt.der.eIzq == null)
                        {
                            nt.der = obtNod(nt.der);
                        }
                    }
                }

                if (nt.tip != 'r')
                {
                    if (nt.izq != null)
                    {
                        eliVac(nt.izq);
                    }
                }

                if (nt.der != null)
                {
                    eliVac(nt.der);
                }
            }
        }
Ejemplo n.º 13
0
        ///////////////////// otras metodos
        private void impGra(NodoGrafo nt)
        {
            if (nt != null)
            {
                if (nt.izq != null)
                {
                    if (nt.eIzq != null)
                    {
                        //Console.WriteLine(nt.tip + "" + nt.ide + "->" + nt.izq.tip + nt.izq.ide + "[label=\"" + " IZQ " + nt.eIzq.lex + "\"];");
                        tom.agregar(nt.ide, new NodCon(nt.izq.ide, nt.eIzq));
                    }
                    else
                    {
                        Console.WriteLine(nt.tip + "" + nt.ide + "->" + nt.izq.tip + nt.izq.ide + "[label=\"" + "IZQ" + "\"];");
                    }
                    if (nt.tip != 'r')
                    {
                        impGra(nt.izq);
                    }
                }

                if (nt.der != null)
                {
                    if (nt.eDer != null)
                    {
                        //Console.WriteLine(nt.tip + "" + nt.ide + "->" + nt.der.tip + nt.der.ide + "[label=\"" + " DER " + nt.eDer.lex + "\"];");
                        tom.agregar(nt.ide, new NodCon(nt.der.ide, nt.eDer));
                    }
                    else
                    {
                        Console.WriteLine(nt.tip + "" + nt.ide + "->" + nt.der.tip + nt.der.ide + "[label=\"" + "DER" + "\"];");
                    }

                    impGra(nt.der);
                }
            }
        }