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); }
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); }
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); }
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); }
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; }
/////////////////////////// CONSTRUCTOR public NodoGrafo() { this.ide = -1; this.izq = null; this.der = null; this.eIzq = null; this.eDer = null; this.tip = 'n'; }
private Boolean er() { NodoGrafo nt = ter(); if (nt != null) { anaGra(nt); return(true); } return(false); }
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); }
///////////////////// 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); }
///////////////////// 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(); }
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); } } }
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); } } }
///////////////////// 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); } } }