@@ -0,0 +1,742 @@
+package absyn;%0A%0Aimport env.Env;%0Aimport parse.Loc;%0Aimport types.Type;%0A%0Apublic abstract class Var extends AST %7B%0A%0A   // Type of the expression, calculated by the semantic analyser%0A   public Type type;%0A%0A   public Var(Loc loc) %7B%0A      super(loc);%0A   %7D%0A%0A   // Obtain the type of the expression as a string prefixed by the given text.%0A   protected String annotateType(String text) %7B%0A      final String theType = type == null ? %22%22 : %22%5Cn%3C%22 + type + %22%3E%22;%0A      return text + theType;%0A   %7D%0A%0A   // Do semantic analysis of the expression%0A   public Type semantic(Env env) %7B%0A      type = semantic_(env);%0A      return type;%0A   %7D%0A%0A   // Type check the expression. Should be defined in the concrete subclasses.%0A   protected abstract Type semantic_(Env env);%0A%7D%0A

Add abstract class for variables