예제 #1
0
        /// <summary>
        /// Creates instance of <typeparamref name="TNewState"/> as result of accepting input item.
        /// Automatically shares context object.
        /// </summary>
        /// <typeparam name="TNewState">Type of new state.</typeparam>
        /// <returns>Instance of new state with shared context objekt.</returns>
        protected virtual TNewState Move <TNewState>()
            where TNewState : TState, new()
        {
            TNewState newState = new TNewState();

            newState.Context = GetContextForNewState();
            return(newState);
        }
        protected override TNewState Move <TNewState>()
        {
            TNewState newState = base.Move <TNewState>();

            newState.Configuration = Configuration;
            newState.HasToken      = HasToken;

            newState.CurrentLineNumber  = CurrentLineNumber;
            newState.CurrentColumnIndex = CurrentColumnIndex;
            newState.LineNumber         = LineNumber;
            newState.ColumnIndex        = ColumnIndex;

            return(newState);
        }