home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / java / ScannerInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  1.9 KB  |  113 lines

  1. package sun.tools.java;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FilterReader;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.UnsupportedEncodingException;
  9. import sun.io.MalformedInputException;
  10.  
  11. public class ScannerInputStream extends FilterReader implements Constants {
  12.    Environment env;
  13.    int pos;
  14.    private int chpos;
  15.    private int pushBack = -1;
  16.  
  17.    public ScannerInputStream(Environment var1, InputStream var2) throws UnsupportedEncodingException {
  18.       super(new BufferedReader(var1.getCharacterEncoding() != null ? new InputStreamReader(var2, var1.getCharacterEncoding()) : new InputStreamReader(var2)));
  19.       this.env = var1;
  20.       this.chpos = 262144;
  21.    }
  22.  
  23.    public int read() throws IOException {
  24.       this.pos = this.chpos++;
  25.       int var1 = this.pushBack;
  26.       if (var1 == -1) {
  27.          try {
  28.             var1 = super.in.read();
  29.          } catch (MalformedInputException var4) {
  30.             this.env.error(this.pos, "invalid.encoding.char");
  31.             return -1;
  32.          }
  33.       } else {
  34.          this.pushBack = -1;
  35.       }
  36.  
  37.       switch (var1) {
  38.          case -2:
  39.             return 92;
  40.          case 10:
  41.             this.chpos += 262144;
  42.             return 10;
  43.          case 13:
  44.             if ((var1 = super.in.read()) != 10) {
  45.                this.pushBack = var1;
  46.             } else {
  47.                ++this.chpos;
  48.             }
  49.  
  50.             this.chpos += 262144;
  51.             return 10;
  52.          case 92:
  53.             if ((var1 = super.in.read()) != 117) {
  54.                this.pushBack = var1 == 92 ? -2 : var1;
  55.                return 92;
  56.             } else {
  57.                ++this.chpos;
  58.  
  59.                while((var1 = super.in.read()) == 117) {
  60.                   ++this.chpos;
  61.                }
  62.  
  63.                int var2 = 0;
  64.  
  65.                for(int var3 = 0; var3 < 4; var1 = super.in.read()) {
  66.                   switch (var1) {
  67.                      case 48:
  68.                      case 49:
  69.                      case 50:
  70.                      case 51:
  71.                      case 52:
  72.                      case 53:
  73.                      case 54:
  74.                      case 55:
  75.                      case 56:
  76.                      case 57:
  77.                         var2 = (var2 << 4) + var1 - 48;
  78.                         break;
  79.                      case 65:
  80.                      case 66:
  81.                      case 67:
  82.                      case 68:
  83.                      case 69:
  84.                      case 70:
  85.                         var2 = (var2 << 4) + 10 + var1 - 65;
  86.                         break;
  87.                      case 97:
  88.                      case 98:
  89.                      case 99:
  90.                      case 100:
  91.                      case 101:
  92.                      case 102:
  93.                         var2 = (var2 << 4) + 10 + var1 - 97;
  94.                         break;
  95.                      default:
  96.                         this.env.error(this.pos, "invalid.escape.char");
  97.                         this.pushBack = var1;
  98.                         return var2;
  99.                   }
  100.  
  101.                   ++var3;
  102.                   ++this.chpos;
  103.                }
  104.  
  105.                this.pushBack = var1;
  106.                return var2;
  107.             }
  108.          default:
  109.             return var1;
  110.       }
  111.    }
  112. }
  113.