public Graphviz ToGraph()
        {
            Graphviz graph = new Graphviz();

            IEnumerable <State>        states = States;
            Dictionary <State, string> labels = new Dictionary <State, string>();

            foreach (State state in states)
            {
                labels[state] = (labels.Count + 1).ToString();
                graph.AddShape(labels[state], state.IsFinal ? "doublecircle" : "circle");
            }

            if (Start != null)
            {
                graph.AddShape("", "none");
                graph.AddTransition("", labels[Start]);
            }

            foreach (State fromState in states)
            {
                foreach (CharRange input in fromState.Alphabet)
                {
                    graph.AddTransition(labels[fromState], labels[fromState[input]], input.ToString());
                }
            }

            return(graph);
        }
        public Graphviz ToGraph()
        {
            Graphviz graph = new Graphviz();

            IEnumerable<State> states = States;
            Dictionary<State, string> labels = new Dictionary<State, string>();

            foreach (State state in states)
            {
                labels[state] = (labels.Count + 1).ToString();
                graph.AddShape(labels[state], state.IsFinal ? "doublecircle" : "circle");
            }

            if (Start != null)
            {
                graph.AddShape("", "none");
                graph.AddTransition("", labels[Start]);
            }

            foreach (State fromState in states)
                foreach (CharRange input in fromState.Alphabet)
                    graph.AddTransition(labels[fromState], labels[fromState[input]], input.ToString());

            return graph;
        }