summaryrefslogtreecommitdiff
path: root/vaporize
diff options
context:
space:
mode:
Diffstat (limited to 'vaporize')
-rw-r--r--vaporize/library/CFGNode.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/vaporize/library/CFGNode.java b/vaporize/library/CFGNode.java
new file mode 100644
index 0000000..ca60856
--- /dev/null
+++ b/vaporize/library/CFGNode.java
@@ -0,0 +1,48 @@
+package vaporize.library;
+
+import cs132.vapor.ast.*;
+import java.util.ArrayList;
+
+class CFGNode {
+
+ private Node instruction;
+ private ArrayList<CFGNode> sources;
+ private ArrayList<CFGNode> dests;
+ private int line;
+
+ protected CFGNode(Node instruction) {
+ this.instruction = instruction;
+ this.sources = new ArrayList<>();
+ this.dests = new ArrayList<>();
+ this.line = this.instruction.sourcePos.line;
+ }
+
+ public String toString() {
+ return this.instruction.toString();
+ }
+
+ public int hashCode() {
+ return this.line;
+ }
+
+ protected void addSource(CFGNode node) {
+ this.sources.add(node);
+ }
+
+ protected void addDest(CFGNode node) {
+ this.dests.add(node);
+ }
+
+ protected Node getInstruction() {
+ return this.instruction;
+ }
+
+ protected ArrayList<CFGNode> getSources() {
+ return this.sources;
+ }
+
+ protected ArrayList<CFGNode> getDests() {
+ return this.dests;
+ }
+
+}