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

  1. package espresso;
  2.  
  3. class ForLoop extends JumpTarget {
  4.    AST body;
  5.    // $FF: renamed from: e3 espresso.AST[]
  6.    AST[] field_0;
  7.    // $FF: renamed from: e2 espresso.AST
  8.    AST field_1;
  9.    // $FF: renamed from: e1 espresso.AST[]
  10.    AST[] field_2;
  11.  
  12.    void print(int var1) {
  13.       System.out.print("for (");
  14.       AST.printSeq(this.field_2);
  15.       System.out.print("; ");
  16.       if (this.field_1 != null) {
  17.          this.field_1.print();
  18.       }
  19.  
  20.       System.out.print("; ");
  21.       AST.printSeq(this.field_0);
  22.       System.out.print(") ");
  23.       this.body.print();
  24.    }
  25.  
  26.    Item gen() {
  27.       if (this.field_2.length > 0) {
  28.          Gen.statBegin(this.field_2[0].pos);
  29.       }
  30.  
  31.       for(int var1 = 0; var1 < this.field_2.length; ++var1) {
  32.          this.field_2[var1].genDrop();
  33.       }
  34.  
  35.       int var2 = Gen.curPc();
  36.       CondItem var3;
  37.       if (this.field_1 != null) {
  38.          Gen.statBegin(this.field_1.pos);
  39.          var3 = this.field_1.gen().mkCond();
  40.       } else {
  41.          var3 = new CondItem(167);
  42.       }
  43.  
  44.       super.exit = var3.jumpFalse();
  45.       if (var3.trueJumps != null || var3.opcode != Gen.dontgoto) {
  46.          Gen.resolve(var3.trueJumps);
  47.          this.body.genDrop();
  48.          Gen.resolve(super.cont);
  49.          if (this.field_0.length > 0) {
  50.             Gen.statBegin(this.field_0[0].pos);
  51.          }
  52.  
  53.          for(int var4 = 0; var4 < this.field_0.length; ++var4) {
  54.             this.field_0[var4].genDrop();
  55.          }
  56.  
  57.          Gen.resolve(Gen.branch(167), var2);
  58.       }
  59.  
  60.       Gen.resolve(super.exit);
  61.       return Item.voidItem;
  62.    }
  63.  
  64.    AST simplify() {
  65.       for(int var1 = 0; var1 < this.field_2.length; ++var1) {
  66.          this.field_2[var1] = this.field_2[var1].simplify();
  67.       }
  68.  
  69.       if (this.field_1 != null) {
  70.          this.field_1 = this.field_1.simplify();
  71.       }
  72.  
  73.       for(int var2 = 0; var2 < this.field_0.length; ++var2) {
  74.          this.field_0[var2] = this.field_0[var2].simplify();
  75.       }
  76.  
  77.       this.body = this.body.simplify();
  78.       return this;
  79.    }
  80.  
  81.    void markCaptured(Bits var1) {
  82.       for(int var2 = 0; var2 < this.field_2.length; ++var2) {
  83.          this.field_2[var2].markCaptured(var1);
  84.       }
  85.  
  86.       var1.orSet(super.contCapt);
  87.       if (this.field_1 != null) {
  88.          this.field_1.markCaptured(var1);
  89.       }
  90.  
  91.       super.exitCapt.orSet(var1);
  92.       this.body.markCaptured(var1);
  93.  
  94.       for(int var3 = 0; var3 < this.field_0.length; ++var3) {
  95.          this.field_0[var3].markCaptured(var1);
  96.       }
  97.  
  98.       super.contCapt.orSet(var1);
  99.       var1.assign(super.exitCapt);
  100.    }
  101.  
  102.    Typ attr(Env var1, int var2, Typ var3) {
  103.       Env var4 = new Env(var1, var1.parent, var1.scope.duplicate());
  104.  
  105.       for(int var5 = 0; var5 < this.field_2.length; ++var5) {
  106.          this.field_2[var5].attr(var4, 12, Typ.anyTyp);
  107.       }
  108.  
  109.       if (this.field_1 != null) {
  110.          this.field_1.attr(var4, 12, Typ.booleanTyp);
  111.       }
  112.  
  113.       var4.parent = this;
  114.  
  115.       for(int var6 = 0; var6 < this.field_0.length; ++var6) {
  116.          this.field_0[var6].attr(var4, 12, Typ.anyTyp);
  117.          if (this.field_0[var6].tag == 77) {
  118.             this.field_0[var6].tag = 75;
  119.          } else if (this.field_0[var6].tag == 78) {
  120.             this.field_0[var6].tag = 76;
  121.          }
  122.       }
  123.  
  124.       super.typ = this.body.attr(var4, 12, var3);
  125.       var4.scope.leave();
  126.       return super.typ;
  127.    }
  128.  
  129.    ForLoop(int var1, ASTS var2, AST var3, ASTS var4, AST var5) {
  130.       super(var1, 11);
  131.       this.field_2 = var2.shrink();
  132.       this.field_1 = var3;
  133.       this.field_0 = var4.shrink();
  134.       this.body = var5;
  135.       super.contCapt = new Bits();
  136.       super.exitCapt = new Bits();
  137.    }
  138. }
  139.