コード例 #1
0
 public bool TryRunFsm(FSM fsm, out string text)
 {
     return(fsm.TryRun(this.Reader, out text));
 }
コード例 #2
0
 internal FsmParserNode(Rule rule, RuleExpression expression, FSM fsm)
     : base(rule, expression)
 {
     this.Fsm = fsm;
 }
コード例 #3
0
 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();
     }
 }
コード例 #4
0
 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();
     }
 }
コード例 #5
0
 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();
     }
 }