home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / TopLevel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-02-28  |  2.8 KB  |  110 lines

  1. package espresso;
  2.  
  3. class TopLevel extends AST {
  4.    ASTS newClasses;
  5.    int pass;
  6.    Env env;
  7.    String sourcefile;
  8.    AST[] defs;
  9.  
  10.    void print(int var1) {
  11.       for(int var2 = 0; var2 < this.defs.length; ++var2) {
  12.          this.defs[var2].print(var1);
  13.          System.out.println();
  14.       }
  15.  
  16.    }
  17.  
  18.    Item gen() {
  19.       if (Report.nerrors == 0) {
  20.          Report.open(this.sourcefile);
  21.  
  22.          for(int var1 = 0; var1 < this.defs.length; ++var1) {
  23.             this.defs[var1].genDrop();
  24.             this.defs[var1].output();
  25.          }
  26.  
  27.          Report.close();
  28.       }
  29.  
  30.       return Item.voidItem;
  31.    }
  32.  
  33.    AST simplify() {
  34.       if (Switches.verbose) {
  35.          System.out.println(String.valueOf(String.valueOf("[simplifying ").concat(String.valueOf(this.sourcefile))).concat(String.valueOf("]")));
  36.       }
  37.  
  38.       this.newClasses = new ASTS();
  39.  
  40.       for(int var1 = 0; var1 < this.defs.length; ++var1) {
  41.          this.defs[var1] = this.defs[var1].simplify();
  42.       }
  43.  
  44.       if (this.newClasses.length != 0) {
  45.          for(int var2 = 0; var2 < this.newClasses.length; ++var2) {
  46.             this.newClasses.elems[var2].enter(this.env);
  47.          }
  48.  
  49.          ASTS var3 = new ASTS(this.defs);
  50.          var3.append(this.newClasses);
  51.          this.defs = var3.shrink();
  52.       }
  53.  
  54.       if (Switches.printTree) {
  55.          ((AST)this).print();
  56.       }
  57.  
  58.       return this;
  59.    }
  60.  
  61.    void attr() {
  62.       if (Switches.verbose) {
  63.          System.out.println(String.valueOf(String.valueOf("[checking ").concat(String.valueOf(this.sourcefile))).concat(String.valueOf("]")));
  64.       }
  65.  
  66.       Report.open(this.sourcefile);
  67.  
  68.       for(int var1 = 0; var1 < this.defs.length; ++var1) {
  69.          this.defs[var1].attr(this.env, 2, Typ.anyTyp);
  70.       }
  71.  
  72.       Report.close();
  73.    }
  74.  
  75.    void enterFields() {
  76.       Report.open(this.sourcefile);
  77.       if (this.pass == 1) {
  78.          this.env.globalScope.baseOn(Predef.scope);
  79.          Import.includeDir(this.env, 0, Name.fromString("java.lang"));
  80.       }
  81.  
  82.       for(int var1 = 0; var1 < this.defs.length; ++var1) {
  83.          if (this.pass == 1 || this.defs[var1].tag != 26) {
  84.             this.defs[var1].enterFields(this.env);
  85.          }
  86.       }
  87.  
  88.       Report.close();
  89.       ++this.pass;
  90.    }
  91.  
  92.    void enter() {
  93.       Report.open(this.sourcefile);
  94.       this.env = new Env(this);
  95.  
  96.       for(int var1 = 0; var1 < this.defs.length; ++var1) {
  97.          this.defs[var1].enter(this.env);
  98.       }
  99.  
  100.       Report.close();
  101.    }
  102.  
  103.    TopLevel(ASTS var1, String var2) {
  104.       super(0, 29);
  105.       this.defs = var1.shrink();
  106.       this.sourcefile = var2;
  107.       this.pass = 1;
  108.    }
  109. }
  110.