private static string MakeTransitionString(this IFsmTransitionCondition cond) { string result; if (cond != null) { if (cond.Character.HasValue) { result = cond.Character.ToString(); } else if (cond.ClassTestOrNull != null) { result = "class"; } else { result = "ε"; } } else { result = "ε"; } return(result); }
public IFsmTransition CreateTransition(IFsmState from, IFsmState to, IFsmTransitionCondition Condition) { if (from.Fsm != this) { throw new ArgumentException(); } if (to.Fsm != this) { throw new ArgumentException(); } var fromState = _states[from.Id]; var toState = _states[to.Id]; if (fromState.IsDeleted || toState.IsDeleted) { throw new ArgumentException(); } var transition = new FsmTransition(this, fromState, toState, Condition); fromState.RegisterOutTransition(transition); toState.RegisterInTransition(transition); _transitions.Add(transition); return(transition); }
public FsmTransition(Fsm owner, FsmState from, FsmState to, IFsmTransitionCondition Condition)//char? character, Func<char, bool> classTest, { _owner = owner; this.FromState = from; this.ToState = to; //this.Character = character; //this.IsDeleted = false; //this.ClassTest = classTest; this.Condition = Condition; }
public IFsmTransition Add(int from, int to, IFsmTransitionCondition Condition) // char? ch = null) { return(this.CreateTransition(_states[from], _states[to], Condition)); //CreateTransition(_states[from], _states[to], ch, null, null); }