private static void writeDFA(DFA dfa, Writer out) throws IOException { Character[] alphabet = dfa.alphabet().toArray(new Character[0]); State[] states = dfa.allStates().toArray(new State[0]); out.write("Start: "); out.write(dfa.startState().toString()); out.write("\n"); out.write("Final: "); for (State state : dfa.finalStates()) { out.write("\t"); out.write(state.toString()); } out.write("\n"); out.write("-"); for (Character character : alphabet) { out.write("\t"); out.write(character); } out.write("\n"); for (State currState : states) { out.write(currState.toString()); // out.write("\t"); for (Character charater : alphabet) { out.write("\t"); out.write(dfa.transition(currState, charater).toString()); } out.write("\n"); } out.write("--Tokens\n"); for (State currState : states) { Stack<Token> tokens = currState.getTokens(); out.write(currState.toString()); while (!tokens.isEmpty()) { out.write("\t"); out.write(tokens.pop().toString()); } out.write("\n"); } out.flush(); }