public virtual StateBase CollectToken(StateBase currentState, char c, IMatchNotificator matchNotificator) { var nextState = currentState.GetNextState(c); if (nextState != null) { matchNotificator.Notificate(c); } return(nextState); }
/// <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; }