5 public class VarExpr extends Expr {
8 VarDescriptor vd = null;
9 boolean typechecked = false;
11 public VarExpr(String varname) {
12 this.varname = varname;
15 public Set getRequiredDescriptors() {
19 public void generate(CodeWriter writer, VarDescriptor dest) {
21 // #TBD#: bit of a hack, really should have been type checked properly
23 vd = (VarDescriptor) writer.getSymbolTable().get(varname);
25 assert vd.getType() != null;
26 this.td = vd.getType();
28 writer.outputline(vd.getType().getGenerateType().getSafeSymbol() + " " + dest.getSafeSymbol() +
29 " = (" + vd.getType().getGenerateType().getSafeSymbol() + ") " + vd.getSafeSymbol() + "; //varexpr");
32 public void prettyPrint(PrettyPrinter pp) {
36 public TypeDescriptor typecheck(SemanticAnalyzer sa) {
38 vd = (VarDescriptor) sa.getSymbolTable().get(varname);
41 System.out.println(varname);
42 sa.getErrorReporter().report(null, "Undefined variable '" + varname + "'");
46 assert vd.getType() != null;
48 this.td = vd.getType();