home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / text / html / ParseException.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  2.9 KB  |  124 lines

  1. package com.sun.java.swing.text.html;
  2.  
  3. class ParseException extends ParseError {
  4.    protected boolean specialConstructor;
  5.    public Token currentToken;
  6.    public int[][] expectedTokenSequences;
  7.    public String[] tokenImage;
  8.    protected String eol = System.getProperty("line.separator", "\n");
  9.  
  10.    public ParseException(Token var1, int[][] var2, String[] var3) {
  11.       super("");
  12.       this.specialConstructor = true;
  13.       this.currentToken = var1;
  14.       this.expectedTokenSequences = var2;
  15.       this.tokenImage = var3;
  16.    }
  17.  
  18.    public ParseException() {
  19.       this.specialConstructor = false;
  20.    }
  21.  
  22.    public ParseException(String var1) {
  23.       super(var1);
  24.       this.specialConstructor = false;
  25.    }
  26.  
  27.    public String getMessage() {
  28.       if (!this.specialConstructor) {
  29.          return super.getMessage();
  30.       } else {
  31.          String var1 = "";
  32.          int var2 = 0;
  33.  
  34.          for(int var3 = 0; var3 < this.expectedTokenSequences.length; ++var3) {
  35.             if (var2 < this.expectedTokenSequences[var3].length) {
  36.                var2 = this.expectedTokenSequences[var3].length;
  37.             }
  38.  
  39.             for(int var4 = 0; var4 < this.expectedTokenSequences[var3].length; ++var4) {
  40.                var1 = var1 + this.tokenImage[this.expectedTokenSequences[var3][var4]] + " ";
  41.             }
  42.  
  43.             if (this.expectedTokenSequences[var3][this.expectedTokenSequences[var3].length - 1] != 0) {
  44.                var1 = var1 + "...";
  45.             }
  46.  
  47.             var1 = var1 + this.eol + "    ";
  48.          }
  49.  
  50.          String var7 = "Encountered \"";
  51.          Token var5 = this.currentToken.next;
  52.  
  53.          for(int var6 = 0; var6 < var2; ++var6) {
  54.             if (var6 != 0) {
  55.                var7 = var7 + " ";
  56.             }
  57.  
  58.             if (var5.kind == 0) {
  59.                var7 = var7 + this.tokenImage[0];
  60.                break;
  61.             }
  62.  
  63.             var7 = var7 + this.add_escapes(var5.image);
  64.             var5 = var5.next;
  65.          }
  66.  
  67.          var7 = var7 + "\" at line " + this.currentToken.next.beginLine + ", column " + this.currentToken.next.beginColumn + "." + this.eol;
  68.          if (this.expectedTokenSequences.length == 1) {
  69.             var7 = var7 + "Was expecting:" + this.eol + "    ";
  70.          } else {
  71.             var7 = var7 + "Was expecting one of:" + this.eol + "    ";
  72.          }
  73.  
  74.          var7 = var7 + var1;
  75.          return var7;
  76.       }
  77.    }
  78.  
  79.    protected String add_escapes(String var1) {
  80.       StringBuffer var2 = new StringBuffer();
  81.  
  82.       for(int var4 = 0; var4 < var1.length(); ++var4) {
  83.          switch (var1.charAt(var4)) {
  84.             case '\u0000':
  85.                break;
  86.             case '\b':
  87.                var2.append("\\b");
  88.                break;
  89.             case '\t':
  90.                var2.append("\\t");
  91.                break;
  92.             case '\n':
  93.                var2.append("\\n");
  94.                break;
  95.             case '\f':
  96.                var2.append("\\f");
  97.                break;
  98.             case '\r':
  99.                var2.append("\\r");
  100.                break;
  101.             case '"':
  102.                var2.append("\\\"");
  103.                break;
  104.             case '\'':
  105.                var2.append("\\'");
  106.                break;
  107.             case '\\':
  108.                var2.append("\\\\");
  109.                break;
  110.             default:
  111.                char var3;
  112.                if ((var3 = var1.charAt(var4)) >= ' ' && var3 <= '~') {
  113.                   var2.append(var3);
  114.                } else {
  115.                   String var5 = "0000" + Integer.toString(var3, 16);
  116.                   var2.append("\\u" + var5.substring(var5.length() - 4, var5.length()));
  117.                }
  118.          }
  119.       }
  120.  
  121.       return var2.toString();
  122.    }
  123. }
  124.