コード例 #1
0
            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));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
            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);
                }
            }