Class Graph

java.lang.Object
org.antlr.misc.Graph

public class Graph extends Object
A generic graph with edges; Each node as a single Object payload. This is only used to topologically sort a list of file dependencies at the moment.
  • Field Details

  • Constructor Details

    • Graph

      public Graph()
  • Method Details

    • addEdge

      public void addEdge(Object a, Object b)
    • getNode

      protected Graph.Node getNode(Object a)
    • sort

      public List<Object> sort()
      DFS-based topological sort. A valid sort is the reverse of the post-order DFA traversal. Amazingly simple but true. For sorting, I'm not following convention here since ANTLR needs the opposite. Here's what I assume for sorting: If there exists an edge u -> v then u depends on v and v must happen before u. So if this gives nonreversed postorder traversal, I get the order I want.
    • DFS

      public void DFS(Graph.Node n, Set<Graph.Node> visited, ArrayList<Object> sorted)