コード例 #1
0
ファイル: Estado.cs プロジェクト: imxrako/LR-1-
        /// <summary>
        /// Agrega la primera produccion del estado obtiene su lista de busqueda
        /// y verifica si en la posicion del punto existe un NT. Si Existe agrega las
        /// producciones de inicio de ese NT.
        /// </summary>
        /// <param name="prodAux">Copia de la primera produccion del estado</param>
        private void inicializaEdo(Produccion prodAux)
        {
            List<Term> listTokenBusq = new List<Term>();

            if (prodAux.punto < prodAux.listProd.Count) //si el punto no ha llegado al final
            {
                if (prodAux.listProd[prodAux.punto].GetType().Name.Equals("NoTerm")) // si en la posicion del punto hay un NT
                {
                    listTokenBusq = prodAux.regresaPrimeroProd();
                    this.agregaProduccionesInicio(((NoTerm)prodAux.listProd[prodAux.punto]),listTokenBusq); //Agrega al estado las producciones de inicio de ese NT
                }
            }
        }
コード例 #2
0
        private void inicializaEdo(Produccion prodAux, List <Term> listTokenBusq)
        {
//            List<Term> listTokenBusq = new List<Term>();

            if (prodAux.punto < prodAux.listProd.Count)                              //si el punto no ha llegado al final
            {
                if (prodAux.listProd[prodAux.punto].GetType().Name.Equals("NoTerm")) // si en la posicion del punto hay un NT
                {
                    listTokenBusq = listTokenBusq.Union(prodAux.regresaPrimeroProd()).ToList();
                    this.agregaProduccionesInicio(((NoTerm)prodAux.listProd[prodAux.punto]), listTokenBusq); //Agrega al estado las producciones de inicio de ese NT
                }
            }
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
ファイル: Estado.cs プロジェクト: imxrako/LR-1-
        /// <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);
            }
        }