home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class ForLoop extends JumpTarget {
- AST body;
- // $FF: renamed from: e3 espresso.AST[]
- AST[] field_0;
- // $FF: renamed from: e2 espresso.AST
- AST field_1;
- // $FF: renamed from: e1 espresso.AST[]
- AST[] field_2;
-
- void print(int var1) {
- System.out.print("for (");
- AST.printSeq(this.field_2);
- System.out.print("; ");
- if (this.field_1 != null) {
- this.field_1.print();
- }
-
- System.out.print("; ");
- AST.printSeq(this.field_0);
- System.out.print(") ");
- this.body.print();
- }
-
- Item gen() {
- if (this.field_2.length > 0) {
- Gen.statBegin(this.field_2[0].pos);
- }
-
- for(int var1 = 0; var1 < this.field_2.length; ++var1) {
- this.field_2[var1].genDrop();
- }
-
- int var2 = Gen.curPc();
- CondItem var3;
- if (this.field_1 != null) {
- Gen.statBegin(this.field_1.pos);
- var3 = this.field_1.gen().mkCond();
- } else {
- var3 = new CondItem(167);
- }
-
- super.exit = var3.jumpFalse();
- if (var3.trueJumps != null || var3.opcode != Gen.dontgoto) {
- Gen.resolve(var3.trueJumps);
- this.body.genDrop();
- Gen.resolve(super.cont);
- if (this.field_0.length > 0) {
- Gen.statBegin(this.field_0[0].pos);
- }
-
- for(int var4 = 0; var4 < this.field_0.length; ++var4) {
- this.field_0[var4].genDrop();
- }
-
- Gen.resolve(Gen.branch(167), var2);
- }
-
- Gen.resolve(super.exit);
- return Item.voidItem;
- }
-
- AST simplify() {
- for(int var1 = 0; var1 < this.field_2.length; ++var1) {
- this.field_2[var1] = this.field_2[var1].simplify();
- }
-
- if (this.field_1 != null) {
- this.field_1 = this.field_1.simplify();
- }
-
- for(int var2 = 0; var2 < this.field_0.length; ++var2) {
- this.field_0[var2] = this.field_0[var2].simplify();
- }
-
- this.body = this.body.simplify();
- return this;
- }
-
- void markCaptured(Bits var1) {
- for(int var2 = 0; var2 < this.field_2.length; ++var2) {
- this.field_2[var2].markCaptured(var1);
- }
-
- var1.orSet(super.contCapt);
- if (this.field_1 != null) {
- this.field_1.markCaptured(var1);
- }
-
- super.exitCapt.orSet(var1);
- this.body.markCaptured(var1);
-
- for(int var3 = 0; var3 < this.field_0.length; ++var3) {
- this.field_0[var3].markCaptured(var1);
- }
-
- super.contCapt.orSet(var1);
- var1.assign(super.exitCapt);
- }
-
- Typ attr(Env var1, int var2, Typ var3) {
- Env var4 = new Env(var1, var1.parent, var1.scope.duplicate());
-
- for(int var5 = 0; var5 < this.field_2.length; ++var5) {
- this.field_2[var5].attr(var4, 12, Typ.anyTyp);
- }
-
- if (this.field_1 != null) {
- this.field_1.attr(var4, 12, Typ.booleanTyp);
- }
-
- var4.parent = this;
-
- for(int var6 = 0; var6 < this.field_0.length; ++var6) {
- this.field_0[var6].attr(var4, 12, Typ.anyTyp);
- if (this.field_0[var6].tag == 77) {
- this.field_0[var6].tag = 75;
- } else if (this.field_0[var6].tag == 78) {
- this.field_0[var6].tag = 76;
- }
- }
-
- super.typ = this.body.attr(var4, 12, var3);
- var4.scope.leave();
- return super.typ;
- }
-
- ForLoop(int var1, ASTS var2, AST var3, ASTS var4, AST var5) {
- super(var1, 11);
- this.field_2 = var2.shrink();
- this.field_1 = var3;
- this.field_0 = var4.shrink();
- this.body = var5;
- super.contCapt = new Bits();
- super.exitCapt = new Bits();
- }
- }
-