private ISet <string> GetAccreditedSetFromRegexNFATransition(BasicRegexFATransition <string, BasicRegexNFAState <string> > transition) { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } var field = typeof(RangeSetRegexFATransition <string, BasicRegexNFAState <string> >).GetField("set", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); return(field.GetValue(transition) as RangeSet <string>); }
protected virtual IAcceptInputTransition <T> ActivateRegexDFATransitionFromAccreditedSet(RangeSet <T> rangeSet) { if (rangeSet == null) { throw new ArgumentNullException(nameof(rangeSet)); } return(BasicRegexFATransition <T> .Adapt( new RangeSetRegexFATransition <T, BasicRegexDFAState <T> >(rangeSet) )); }
protected override IAcceptInputTransition <T> ActivateRegexNFATransitionFromRegexRange(RegexRange <T> regex) { if (regex == null) { throw new ArgumentNullException(nameof(regex)); } if (this.AccreditedSet.Any(t => regex.Condition(t))) { return(BasicRegexFATransition <T> .Adapt(new RangeSetRegexFATransition <T, BasicRegexNFAState <T> >(new RangeSet <T>(new[] { (IRange <T>)regex }, this.rangeSet.RangeInfo)))); } else { return(new BasicRegexFATransition <T>(t => false)); } }
protected virtual ISet <T> GetAccreditedSetFromBasicRegexFATransition <TRegexFAState>(BasicRegexFATransition <T, TRegexFAState> transition) where TRegexFAState : IRegexFSMState <T, BasicRegexFATransition <T, TRegexFAState> > { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } var result = this.DynamicInvokeShunt(BasicRegexStateMachineActivationContextInfo <T> .GetAccreditedSetFromBasicRegexFATransitionSource, transition); if (result.Success) { return((ISet <T>)result.ReturnValue); } else { return(new RangeSet <T>(this.AccreditedSet.Where(item => transition.Predicate(item)), this.rangeInfo)); } }
protected virtual Predicate <T> GetPredicateFromBasicRegexFATransition <TRegexFAState>(BasicRegexFATransition <T, TRegexFAState> transition) where TRegexFAState : IRegexFSMState <T, BasicRegexFATransition <T, TRegexFAState> > { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } return(transition.Predicate); }
protected virtual BasicRegexFATransition <T, BasicRegexNFAState <T> > ActivateRegexNFATransitionFromDumplication(BasicRegexFATransition <T, BasicRegexNFAState <T> > transition) { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } var result = this.DynamicInvokeShunt(BasicRegexStateMachineActivationContextInfo <T> .ActivateRegexNFATransitionFromDumplicationSource_BasicRegexNFATransition, transition); if (result.Success) { return((BasicRegexFATransition <T, BasicRegexNFAState <T> >)result.ReturnValue); } else { return(new BasicRegexFATransition <T, BasicRegexNFAState <T> >(transition.Predicate)); } }
private BasicRegexFATransition <string, BasicRegexNFAState <string> > ActivateRegexNFATransitionFromDumplication(BasicRegexFATransition <string, BasicRegexNFAState <string> > transition) { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } if (transition is RangeSetRegexFATransition <string, BasicRegexNFAState <string> > rangeSetTransition) { return(this.ActivateRegexNFATransitionFromDumplication(rangeSetTransition)); } else { return(transition); } }