private static Fare.State Convert(State s, IDictionary <State, Fare.State> visited) { var converted = visited[s]; if (converted != null) { return(converted); } converted = new Fare.State { Accept = s.IsFinal, }; visited.Add(s, converted); var i = 0; var labels = s.TransitionLabels; foreach (var target in s.States) { converted.AddTransition(new Transition(labels[i++], Convert(target, visited))); } return(converted); }
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); }