@Override public String toString() { return new NfaGraphFormatter().format(this); }
protected <STATE> Node createNodes(Nfa<STATE> nfa, STATE state, Map<STATE, Integer> names, Wrapper<Integer> lastName) { Integer name = names.get(state); if (name != null) return new Node(String.valueOf(name), true); lastName.set(lastName.get() + 1); names.put(state, lastName.get()); Node node = new Node(String.valueOf(lastName.get()), false); for (STATE follower : nfa.getFollowers(state)) node.children.add(createNodes(nfa, follower, names, lastName)); return node; } }
protected <STATE> Node createNodes(Nfa<STATE> nfa, STATE state, Map<STATE, Integer> names, Wrapper<Integer> lastName) { Integer name = names.get(state); if (name != null) return new Node(String.valueOf(name), true); lastName.set(lastName.get() + 1); names.put(state, lastName.get()); Node node = new Node(String.valueOf(lastName.get()), false); for (STATE follower : nfa.getFollowers(state)) node.children.add(createNodes(nfa, follower, names, lastName)); return node; } }
public <STATE> String format(Nfa<STATE> nfa) { Map<STATE, Integer> names = Maps.newLinkedHashMap(); List<Node> nodes = Lists.newArrayList(); nodes.add(createNodes(nfa, nfa.getStart(), names, new Wrapper<Integer>(0))); StringBuilder result = new StringBuilder(); STATE starts = nfa.getStart();
public <STATE> String format(Nfa<STATE> nfa) { Map<STATE, Integer> names = Maps.newLinkedHashMap(); List<Node> nodes = Lists.newArrayList(); nodes.add(createNodes(nfa, nfa.getStart(), names, new Wrapper<Integer>(0))); StringBuilder result = new StringBuilder(); STATE starts = nfa.getStart();