home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.java;
-
- import java.io.BufferedReader;
- import java.io.FilterReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.UnsupportedEncodingException;
- import sun.io.MalformedInputException;
-
- public class ScannerInputStream extends FilterReader implements Constants {
- Environment env;
- int pos;
- private int chpos;
- private int pushBack = -1;
-
- public ScannerInputStream(Environment var1, InputStream var2) throws UnsupportedEncodingException {
- super(new BufferedReader(var1.getCharacterEncoding() != null ? new InputStreamReader(var2, var1.getCharacterEncoding()) : new InputStreamReader(var2)));
- this.env = var1;
- this.chpos = 262144;
- }
-
- public int read() throws IOException {
- this.pos = this.chpos++;
- int var1 = this.pushBack;
- if (var1 == -1) {
- try {
- var1 = super.in.read();
- } catch (MalformedInputException var4) {
- this.env.error(this.pos, "invalid.encoding.char");
- return -1;
- }
- } else {
- this.pushBack = -1;
- }
-
- switch (var1) {
- case -2:
- return 92;
- case 10:
- this.chpos += 262144;
- return 10;
- case 13:
- if ((var1 = super.in.read()) != 10) {
- this.pushBack = var1;
- } else {
- ++this.chpos;
- }
-
- this.chpos += 262144;
- return 10;
- case 92:
- if ((var1 = super.in.read()) != 117) {
- this.pushBack = var1 == 92 ? -2 : var1;
- return 92;
- } else {
- ++this.chpos;
-
- while((var1 = super.in.read()) == 117) {
- ++this.chpos;
- }
-
- int var2 = 0;
-
- for(int var3 = 0; var3 < 4; var1 = super.in.read()) {
- switch (var1) {
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- var2 = (var2 << 4) + var1 - 48;
- break;
- case 65:
- case 66:
- case 67:
- case 68:
- case 69:
- case 70:
- var2 = (var2 << 4) + 10 + var1 - 65;
- break;
- case 97:
- case 98:
- case 99:
- case 100:
- case 101:
- case 102:
- var2 = (var2 << 4) + 10 + var1 - 97;
- break;
- default:
- this.env.error(this.pos, "invalid.escape.char");
- this.pushBack = var1;
- return var2;
- }
-
- ++var3;
- ++this.chpos;
- }
-
- this.pushBack = var1;
- return var2;
- }
- default:
- return var1;
- }
- }
- }
-