home *** CD-ROM | disk | FTP | other *** search
/ Online Today 2000 January / Onto0100.iso / pc / JAVA / MSJAVX86.EXE / xmldso.cab / XML4IE3.cab / com / ms / xml / parser / Choice.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-10-10  |  1.3 KB  |  65 lines

  1. package com.ms.xml.parser;
  2.  
  3. import com.ms.xml.util.Name;
  4. import com.ms.xml.util.XMLOutputStream;
  5. import java.io.IOException;
  6. import java.util.BitSet;
  7.  
  8. class Choice extends Node {
  9.    Node left;
  10.    Node right;
  11.  
  12.    Choice(Node var1, Node var2) {
  13.       this.left = var1;
  14.       this.right = var2;
  15.    }
  16.  
  17.    BitSet firstpos(int var1) {
  18.       if (super.first == null) {
  19.          super.first = (BitSet)this.left.firstpos(var1).clone();
  20.          super.first.or(this.right.firstpos(var1));
  21.       }
  22.  
  23.       return super.first;
  24.    }
  25.  
  26.    BitSet lastpos(int var1) {
  27.       if (super.last == null) {
  28.          super.last = (BitSet)this.left.lastpos(var1).clone();
  29.          super.last.or(this.right.lastpos(var1));
  30.       }
  31.  
  32.       return super.last;
  33.    }
  34.  
  35.    void save(XMLOutputStream var1, int var2, int var3, Name var4) throws IOException {
  36.       ++var3;
  37.       if (var2 == 124) {
  38.          this.left.save(var1, 124, var3, var4);
  39.          var1.write(124);
  40.          this.right.save(var1, 124, var3, var4);
  41.       } else {
  42.          var1.write(40);
  43.          this.left.save(var1, 124, var3, var4);
  44.          var1.write(124);
  45.          this.right.save(var1, 124, var3, var4);
  46.          var1.write(41);
  47.       }
  48.  
  49.       --var3;
  50.    }
  51.  
  52.    Node clone(ContentModel var1) {
  53.       return new Choice(this.left.clone(var1), this.right.clone(var1));
  54.    }
  55.  
  56.    void calcfollowpos(BitSet[] var1) {
  57.       this.left.calcfollowpos(var1);
  58.       this.right.calcfollowpos(var1);
  59.    }
  60.  
  61.    boolean nullable() {
  62.       return this.left.nullable() || this.right.nullable();
  63.    }
  64. }
  65.