protected virtual Predicate <T> GetPredicateFromRegexAcceptInputTransition(IAcceptInputTransition <T> transition) { if (transition == null) { throw new ArgumentNullException(nameof(transition)); } return(transition.CanAccept); }
/// <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)); } }
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)); } }
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)); }