//Este metodo se encarga de duplicar una produccion. public Separa coprod() { Separa nr = new Separa(); Produccion np; NT izq = new NT(ladoIzq.nom); izq.NoTerminal(); izq.primero = ladoIzq.primero; izq.siguiente = ladoIzq.siguiente; foreach (Produccion paux in derecha) { np = paux.duprod(); nr.derecha.Add(np); } izq.listaP = nr.derecha; nr.ladoIzq = izq; nr.tksbusqueda = new Produccion(); if (tksbusqueda != null) { nr.tksbusqueda.agregafintk(tksbusqueda.ltok); } return(nr); }
//Este metodo crea la parte izquierda de la produccion, recibe una cadena de la cual se //extraeran los tokens y una lista de tokens. public bool partiz(string texto, CTK listokens) { ladoIzq = listokens.buscar(texto); if (ladoIzq == null) { ladoIzq = new NT(texto); listokens.agregaToken(ladoIzq); } ladoIzq.NoTerminal(); return(true); }