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

  1. package espresso;
  2.  
  3. import java.util.Vector;
  4.  
  5. class Jump extends AST {
  6.    Vector finalizers = new Vector();
  7.  
  8.    JumpTarget findTarget(Env var1, Name var2) {
  9.       JumpTarget var3 = null;
  10.       Env var4 = var1;
  11.       if (var2 != null) {
  12.          while(true) {
  13.             if (var4 == null || var4.parent.tag == 15 || var4.parent.tag == 67 || var4.parent.tag == 14 && ((Labelled)var4.parent).label.equals(var2)) {
  14.                if (var4 != null && var4.parent.tag == 14) {
  15.                   var3 = (JumpTarget)var4.parent;
  16.                   break;
  17.                }
  18.  
  19.                Report.error(super.pos, String.valueOf("undefined label: ").concat(String.valueOf(var2)));
  20.                break;
  21.             }
  22.  
  23.             if (var4.parent.tag == 18) {
  24.                this.finalizers.addElement(var4.parent);
  25.             }
  26.  
  27.             var4 = var4.next;
  28.          }
  29.       } else {
  30.          for(; var4 != null && var4.parent.tag != 15 && var4.parent.tag != 67 && var4.parent.tag != 11 && var4.parent.tag != 10 && var4.parent.tag != 8 && (super.tag != 23 || var4.parent.tag != 21); var4 = var4.next) {
  31.             if (var4.parent.tag == 18) {
  32.                this.finalizers.addElement(var4.parent);
  33.             }
  34.          }
  35.  
  36.          if (var4 != null && var4.parent.tag != 15 && var4.parent.tag != 67) {
  37.             var3 = (JumpTarget)var4.parent;
  38.          } else if (super.tag == 23) {
  39.             Report.error(super.pos, "break outside of loop or switch");
  40.          } else {
  41.             Report.error(super.pos, "continue outside of loop");
  42.          }
  43.       }
  44.  
  45.       return var3;
  46.    }
  47.  
  48.    void finalisation() {
  49.       for(int var1 = 0; var1 < this.finalizers.size(); ++var1) {
  50.          ((Try)this.finalizers.elementAt(var1)).finalisation();
  51.       }
  52.  
  53.    }
  54.  
  55.    void markCaptured(Bits var1) {
  56.       for(int var2 = 0; var2 < this.finalizers.size(); ++var2) {
  57.          ((Try)this.finalizers.elementAt(var2)).captured.orSet(var1);
  58.       }
  59.  
  60.    }
  61.  
  62.    Jump(int var1, int var2) {
  63.       super(var1, var2);
  64.    }
  65. }
  66.