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 extends GJDepthFirst { public HashMap symt = new HashMap<>(); private void print_filter(String message) { boolean debug = true; if (debug) System.out.println(message); } /** * f0 -> Type() * f1 -> Identifier() * f2 -> ";" */ public R visit(VarDeclaration n, A argu) { this.print_filter("Processing declaration"); TypeEnum type = TypeEnum.ERROR; switch (n.f0.f0.which) { case 0: type = TypeEnum.int_array; break; case 2: type = TypeEnum.integer; break; default: this.print_filter("Unsupported case"); } String id = n.f1.f0.tokenImage; this.print_filter("Inserting " + id + " => " + type); // Safe? symt.put(id, type); return null; } }