private void init(Produccion p) { this._listProd.Add(p); // agrega la primera prod del estado if (this.id == 0) { p.agregaTokenBusqueda(new Term("$")); } this.inicializaEdo(p); this.verificaProduccionesEdo(); }
/// <summary> /// Agrega las producciones de inicio del NT recibido /// Calculando los tokens de busqueda de cada producción /// </summary> /// <param name="NT">No Terminal que agregara sus Producciones al estado</param> private void agregaProduccionesInicio(NoTerm NT, List <Term> listTokenBusq) { Produccion prodAux; foreach (Produccion p in NT.listProdInicio) { prodAux = new Produccion(p); if (prodAux.listProd[prodAux.punto].GetType().Name.Equals("NoTerm")) { listTokenBusq = listTokenBusq.Union(prodAux.regresaPrimeroProd()).ToList(); } prodAux.agregaTokenBusqueda(listTokenBusq); this._listProd.Add(prodAux); } }
/// <summary> /// Agrega las producciones de inicio del NT recibido /// Calculando los tokens de busqueda de cada producción /// </summary> /// <param name="NT">No Terminal que agregara sus Producciones al estado</param> private void agregaProduccionesInicio(NoTerm NT,List<Term>listTokenBusq) { Produccion prodAux; foreach (Produccion p in NT.listProdInicio) { prodAux = new Produccion(p); if (prodAux.listProd[prodAux.punto].GetType().Name.Equals("NoTerm")) { listTokenBusq = listTokenBusq.Union(prodAux.regresaPrimeroProd()).ToList(); } prodAux.agregaTokenBusqueda(listTokenBusq); this._listProd.Add(prodAux); } }