diff options
Diffstat (limited to 'vaporize/library/ControlFlowGraph.java')
-rw-r--r-- | vaporize/library/ControlFlowGraph.java | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/vaporize/library/ControlFlowGraph.java b/vaporize/library/ControlFlowGraph.java index 773c4cd..e7057ac 100644 --- a/vaporize/library/ControlFlowGraph.java +++ b/vaporize/library/ControlFlowGraph.java @@ -1,18 +1,33 @@ package vaporize.library; import cs132.vapor.ast.*; +import misc.*; + import java.util.ArrayList; public class ControlFlowGraph { private ArrayList<CFGNode> nodes; private CFGNode start; - private CFGNode end; - public ControlFlowGraph() { + protected ControlFlowGraph() { this.nodes = new ArrayList<>(); this.start = null; - this.end = null; + } + + protected CFGNode getNode(Node a) { + CFGNode ret = null; + for (CFGNode n : this.nodes) { + if (n.equals(a)) { + ret = n; + break; + } + } + + if (ret == null) + MinimalLogger.severe(String.format("Could not find a node matching %s", + a.sourcePos.toString())); + return ret; } protected void addNode(CFGNode node) { @@ -20,6 +35,9 @@ public class ControlFlowGraph { } protected void addEdge(CFGNode source, CFGNode dest) { + MinimalLogger.info(String.format("Edge %s -> %s", + source.getInstruction().sourcePos.line, + dest.getInstruction().sourcePos.line)); source.addDest(dest); dest.addSource(source); } @@ -28,10 +46,6 @@ public class ControlFlowGraph { this.start = start; } - /** - * The following methods are for testing - * only! - */ protected ArrayList<CFGNode> getNodes() { return this.nodes; } |