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

  1. package espresso;
  2.  
  3. class WhileLoop extends JumpTarget {
  4.    AST body;
  5.    AST cond;
  6.  
  7.    void print(int var1) {
  8.       System.out.print("while (");
  9.       this.cond.print();
  10.       System.out.print(") ");
  11.       this.body.print();
  12.    }
  13.  
  14.    Item gen() {
  15.       Gen.statBegin(super.pos);
  16.       int var1 = Gen.curPc();
  17.       CondItem var2 = this.cond.gen().mkCond();
  18.       super.exit = var2.jumpFalse();
  19.       if (var2.trueJumps != null || var2.opcode != Gen.dontgoto) {
  20.          Gen.resolve(var2.trueJumps);
  21.          this.body.genDrop();
  22.          Gen.resolve(super.cont);
  23.          Gen.resolve(Gen.branch(167), var1);
  24.       }
  25.  
  26.       Gen.resolve(super.exit);
  27.       return Item.voidItem;
  28.    }
  29.  
  30.    AST simplify() {
  31.       this.cond = this.cond.simplify();
  32.       this.body = this.body.simplify();
  33.       return this;
  34.    }
  35.  
  36.    void markCaptured(Bits var1) {
  37.       var1.orSet(super.contCapt);
  38.       this.cond.markCaptured(var1);
  39.       super.exitCapt.orSet(var1);
  40.       this.body.markCaptured(var1);
  41.       super.contCapt.orSet(var1);
  42.       var1.assign(super.exitCapt);
  43.    }
  44.  
  45.    Typ attr(Env var1, int var2, Typ var3) {
  46.       this.cond.attr(var1, 12, Typ.booleanTyp);
  47.       Env var4 = new Env(var1, this);
  48.       super.typ = this.body.attr(var4, 12, var3);
  49.       return super.typ;
  50.    }
  51.  
  52.    WhileLoop(int var1, AST var2, AST var3) {
  53.       super(var1, 10);
  54.       this.cond = var2;
  55.       this.body = var3;
  56.       super.contCapt = new Bits();
  57.       super.exitCapt = new Bits();
  58.    }
  59. }
  60.