From 6a24c69232901de51f50beab9c3d3b3760dee334 Mon Sep 17 00:00:00 2001 From: bd-912 Date: Sat, 16 Mar 2024 22:06:32 -0600 Subject: (Nonfunctional) Implemented many type-checking rules --- minijava/SymTableVis.java | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 minijava/SymTableVis.java (limited to 'minijava/SymTableVis.java') 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 implements GJVisitor { + + public HashMap 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; + } + +} -- cgit v1.2.3