/// <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); }
/// <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); }