protected virtual Predicate <T> GetPredicateFromRegexAcceptInputTransition(IAcceptInputTransition <T> transition)
        {
            if (transition == null)
            {
                throw new ArgumentNullException(nameof(transition));
            }

            return(transition.CanAccept);
        }
示例#2
0
        /// <summary>
        /// 从 <see cref="RegexDFA{T}"/> 的一个指定状态移除指定接受输入转换。
        /// </summary>
        /// <param name="state">指定的状态。</param>
        /// <param name="acceptInputTransition">要添加的接受输入转换。</param>
        /// <returns>一个值,指示操作是否成功。</returns>
        /// <exception cref="InvalidOperationException">在 <paramref name="acceptInputTransition"/> 为 <see cref="IEpsilonTransition"/> 接口的实例时抛出。试图向正则表达式构造的确定的有限自动机模型的状态中添加一个 ε 转换。</exception>
        public bool RemoveTransition(IRegexDFAState <T> state, IAcceptInputTransition <T> acceptInputTransition)
        {
            if (acceptInputTransition is IEpsilonTransition)
            {
                throw new InvalidOperationException(
                          "试图向正则表达式构造的确定的有限自动机模型中添加一个 ε 转换。",
                          new ArgumentException("无法接受的 ε 转换。", nameof(acceptInputTransition))
                          );
            }

            return(base.RemoveTransition(state, acceptInputTransition));
        }
            public ISet <string> GetAccreditedSetFromRegexAcceptInputTransition(IAcceptInputTransition <string> transition)
            {
                if (transition == null)
                {
                    throw new ArgumentNullException(nameof(transition));
                }

                if (transition is BasicRegexFATransition <string, BasicRegexNFAState <string> > )
                {
                    return(this.GetAccreditedSetFromRegexNFATransition((BasicRegexFATransition <string, BasicRegexNFAState <string> >)transition));
                }
                else
                {
                    return(new RangeSet <string>(this.AccreditedSet.Where(transition.CanAccept), this.rangeInfo));
                }
            }
示例#4
0
        public override ISet <T> GetAccreditedSetFromRegexAcceptInputTransition(IAcceptInputTransition <T> transition)
        {
            if (transition == null)
            {
                throw new ArgumentNullException(nameof(transition));
            }

            var result = this.DynamicInvokeShunt(BasicRegexStateMachineActivationContextInfo <T> .GetAccreditedSetFromRegexAcceptInputTransitionSource, transition);

            if (result.Success)
            {
                return((ISet <T>)result.ReturnValue);
            }
            else
            {
                return(new RangeSet <T>(this.AccreditedSet.Where(transition.CanAccept), this.rangeInfo));
            }
        }
示例#5
0
 protected override Predicate <T> GetPredicateFromRegexAcceptInputTransition(IAcceptInputTransition <T> transition)
 {
     if (transition == null)
     {
         return(null);
     }
     else
     {
         var result = this.DynamicInvokeShunt(BasicRegexStateMachineActivationContextInfo <T> .GetPredicateFromRegexAcceptInputTransitionSource, transition);
         if (result.Success)
         {
             return((Predicate <T>)result.ReturnValue);
         }
         else
         {
             return(transition.CanAccept);
         }
     }
 }
 public RegexAcceptInputTransitionGroupTransition(IRegexFSMState <T> stateFrom, IAcceptInputTransition <T> acceptInputTransition)
 {
     this.StateFrom             = stateFrom;
     this.AcceptInputTransition = acceptInputTransition;
 }
 public virtual ISet <T> GetAccreditedSetFromRegexAcceptInputTransition(IAcceptInputTransition <T> transition)
 {
     return((ISet <T>) this.DynamicInvokeShunt(RegexStateMachineActivationContextInfoBase <T> .GetAccreditedSetFromRegexAcceptInputTransitionSource, transition));
 }