summaryrefslogtreecommitdiff
path: root/minijava/SymTableVis.java
diff options
context:
space:
mode:
Diffstat (limited to 'minijava/SymTableVis.java')
-rw-r--r--minijava/SymTableVis.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/minijava/SymTableVis.java b/minijava/SymTableVis.java
new file mode 100644
index 0000000..3d8003b
--- /dev/null
+++ b/minijava/SymTableVis.java
@@ -0,0 +1,43 @@
+package minijava;
+
+import syntaxtree.*;
+import visitor.*;
+import java.util.*;
+
+/**
+ * Provides default methods which visit each node in the tree in depth-first
+ * order. Your visitors may extend this class.
+ */
+public class SymTableVis<R,A> implements GJVisitor<R,A> {
+
+ public HashMap<String,String> symt = new HashMap<>();
+
+ private void print_filter(String message) {
+ boolean debug = true;
+ if (debug)
+ System.out.println(message);
+ }
+
+ public R visit(VarDeclaraction n, A argu) {
+ R _ret=null;
+
+ this.print_filter("Processing declaration");
+
+ String type = "";
+ switch (n.f0.f0.which) {
+ case 2:
+ type = "Int"; break;
+ default:
+ this.print_filter("Unsupported case");
+ }
+
+ String id = n.f1.f0.tokenImage;
+
+ this.printfilter("Inserting " + id + " => " + type);
+ // Safe?
+ symt.put(id, type);
+
+ return _ret;
+ }
+
+}