예제 #1
0
        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>()));
        }
예제 #2
0
        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);
        }