summaryrefslogtreecommitdiff
path: root/vaporize/library/ControlFlowGraph.java
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-19 21:50:26 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-19 21:50:51 -0600
commitb733f594c4ab0697aff9afdcc45e0421107dec85 (patch)
treeeb4f5a2d3330523a7c962726f7576c26dc4fc98e /vaporize/library/ControlFlowGraph.java
parente188aa3f962df621fc49097418959c7d00ce9969 (diff)
Vaporize.CFG Add incomplete edge creation
Diffstat (limited to 'vaporize/library/ControlFlowGraph.java')
-rw-r--r--vaporize/library/ControlFlowGraph.java28
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;
}