public bool TryRunFsm(FSM fsm, out string text) { return(fsm.TryRun(this.Reader, out text)); }
internal FsmParserNode(Rule rule, RuleExpression expression, FSM fsm) : base(rule, expression) { this.Fsm = fsm; }
void IRuleExpressionVisitor.VisitCharCode(RuleExpression.CharCode charCode) { if (_currContext.invocationCount == 0) { _currContext = _currContext.ForParentExpression(new ParserNode.FsmParserNode( _currContext.rule, _currContext.expression, FSM.FromCharsSequence(charCode.Character.ToString()) )); } else { throw new InvalidOperationException(); } }
void IRuleExpressionVisitor.VisitAnyChar(RuleExpression.AnyChar anyChar) { if (_currContext.invocationCount == 0) { _currContext = _currContext.ForParentExpression(new ParserNode.FsmParserNode( _currContext.rule, _currContext.expression, FSM.AnyChar() )); } else { throw new InvalidOperationException(); } }
void IRuleExpressionVisitor.VisitRegex(RuleExpression.Regex regex) { if (_currContext.invocationCount == 0) { _currContext = _currContext.ForParentExpression(new ParserNode.FsmParserNode( _currContext.rule, _currContext.expression, FSM.FromPattern(regex.Pattern) )); } else { throw new InvalidOperationException(); } }