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 getInversedRelations() {
19 public Set getRequiredDescriptors() {
23 public VarDescriptor getVar() {
27 public void generate(CodeWriter writer, VarDescriptor dest) {
29 // #TBD#: bit of a hack, really should have been type checked properly
31 vd = (VarDescriptor) writer.getSymbolTable().get(varname);
33 assert vd.getType() != null;
34 this.td = vd.getType();
36 writer.outputline(vd.getType().getGenerateType().getSafeSymbol() + " " + dest.getSafeSymbol() +
37 " = (" + vd.getType().getGenerateType().getSafeSymbol() + ") " + vd.getSafeSymbol() + "; //varexpr");
40 public void prettyPrint(PrettyPrinter pp) {
44 public TypeDescriptor typecheck(SemanticAnalyzer sa) {
46 vd = (VarDescriptor) sa.getSymbolTable().get(varname);
49 System.out.println(varname);
50 sa.getErrorReporter().report(null, "Undefined variable '" + varname + "'");
54 assert vd.getType() != null;
56 this.td = vd.getType();