public static Fare.State Build(IEnumerable <char[]> input) { var builder = new StringUnionOperations(); foreach (var chs in input) { builder.Add(chs); } return(StringUnionOperations.Convert(builder.Complete(), new Dictionary <State, Fare.State>())); }
private static Fare.State Convert(State s, IDictionary <State, Fare.State> visited) { Fare.State converted = visited[s]; if (converted != null) { return(converted); } converted = new Fare.State(); converted.Accept = s.IsFinal; visited.Add(s, converted); int i = 0; char[] labels = s.TransitionLabels; foreach (State target in s.States) { converted.AddTransition(new Transition(labels[i++], StringUnionOperations.Convert(target, visited))); } return(converted); }