コード例 #1
0
        /// <summary>
        /// Updates the state machine according to the state indicated by the top most element of the stack
        /// </summary>
        private void UpdateStateMachine()
        {
            switch (_parserState.Peek())
            {
            case ParserState.NormalState:
                _conditionalInclusionsMachineState = _normalState;
                break;

            case ParserState.IncludingDueToIf:
                _conditionalInclusionsMachineState = _includingDueToIf;
                break;

            case ParserState.DiscardingDueToSuccessfullIf:
                _conditionalInclusionsMachineState = _discardingDueToSuccessfullIf;
                break;

            case ParserState.DiscardingDueToFailedIf:
                _conditionalInclusionsMachineState = _discardingDueToFailedIf;
                break;

            case ParserState.DiscardingDueToMultilineDefine:
                _conditionalInclusionsMachineState = _discardingDueToMultilineDefine;
                break;

            default:
                throw new SourceDiscoveryException("Programming error. Found un-catered machine state (" + _parserState.Peek() + ")");
            }
        }
        /// <summary>
        /// Constructor accepting an expression evaluator object
        /// </summary>
        public ConditionalInclusionsMachine(IEvaluation evaluator)
        {
            this.Evaluator = evaluator;
            this._parserState = new Stack<ParserState>();

            _normalState = new NormalState(this);
            _includingDueToIf = new IncludingDueToIf(this);
            _discardingDueToSuccessfullIf = new DiscardingDueToSuccessfullIf(this);
            _discardingDueToFailedIf = new DiscardingDueToFailedIf(this);
            _discardingDueToMultilineDefine = new DiscardingDueToMultilineDefine(this);
        }
コード例 #3
0
        /// <summary>
        /// Constructor accepting an expression evaluator object
        /// </summary>
        public ConditionalInclusionsMachine(IEvaluation evaluator)
        {
            this.Evaluator    = evaluator;
            this._parserState = new Stack <ParserState>();

            _normalState                    = new NormalState(this);
            _includingDueToIf               = new IncludingDueToIf(this);
            _discardingDueToSuccessfullIf   = new DiscardingDueToSuccessfullIf(this);
            _discardingDueToFailedIf        = new DiscardingDueToFailedIf(this);
            _discardingDueToMultilineDefine = new DiscardingDueToMultilineDefine(this);
        }
        /// <summary>
        /// Updates the state machine according to the state indicated by the top most element of the stack
        /// </summary>
        private void UpdateStateMachine()
        {
            switch (_parserState.Peek())
            {
                case ParserState.NormalState:
                    _conditionalInclusionsMachineState = _normalState;
                    break;

                case ParserState.IncludingDueToIf:
                    _conditionalInclusionsMachineState = _includingDueToIf;
                    break;

                case ParserState.DiscardingDueToSuccessfullIf:
                    _conditionalInclusionsMachineState = _discardingDueToSuccessfullIf;
                    break;

                case ParserState.DiscardingDueToFailedIf:
                    _conditionalInclusionsMachineState = _discardingDueToFailedIf;
                    break;

                case ParserState.DiscardingDueToMultilineDefine:
                    _conditionalInclusionsMachineState = _discardingDueToMultilineDefine;
                    break;

                default:
                    throw new SourceDiscoveryException("Programming error. Found un-catered machine state (" + _parserState.Peek() + ")");
            }
        }