예제 #1
0
        public virtual StateBase CollectToken(StateBase currentState, char c, IMatchNotificator matchNotificator)
        {
            var nextState = currentState.GetNextState(c);

            if (nextState != null)
            {
                matchNotificator.Notificate(c);
            }

            return(nextState);
        }
예제 #2
0
        /// <summary>
        /// Recolecta los Tokens validos
        /// </summary>
        /// <param name="caracters">caracteres a evaluar por el automata</param>
        /// <param name="matchNotificator">Objeto al cual se llamara en cada coincidencia de la Sintaxis</param>
        /// <returns>True si cumplio con la sintaxis, caso contrario False</returns>
        public virtual bool CollectTokens(char[] caracters, IMatchNotificator matchNotificator)
        {
            var       currentState = States[0];
            StateBase nextState    = null;

            foreach (var c in caracters)
            {
                nextState = CollectToken(currentState, c, matchNotificator);
                if (nextState != null)
                {
                    currentState = nextState;
                }

                //nextState = currentState.GetNextState(c);
                //if (nextState != null)
                //{
                //    matchNotificator.Notificate(c);
                //    currentState = nextState;
                //}
            }

            return(currentState != null && currentState.IsFinalState);
            //return nextState != null && nextState.IsFinalState;
        }