1 2 package org.ejen.util.arl; 3 4 public class TokenMgrError extends Error { 5 6 9 10 13 static final int LEXICAL_ERROR = 0; 14 15 18 static final int STATIC_LEXER_ERROR = 1; 19 20 23 static final int INVALID_LEXICAL_STATE = 2; 24 25 28 static final int LOOP_DETECTED = 3; 29 30 34 int errorCode; 35 36 40 protected static final String addEscapes(String str) { 41 StringBuffer retval = new StringBuffer (); 42 char ch; 43 44 for (int i = 0; i < str.length(); i++) { 45 switch (str.charAt(i)) { 46 case 0: 47 continue; 48 49 case '\b': 50 retval.append("\\b"); 51 continue; 52 53 case '\t': 54 retval.append("\\t"); 55 continue; 56 57 case '\n': 58 retval.append("\\n"); 59 continue; 60 61 case '\f': 62 retval.append("\\f"); 63 continue; 64 65 case '\r': 66 retval.append("\\r"); 67 continue; 68 69 case '\"': 70 retval.append("\\\""); 71 continue; 72 73 case '\'': 74 retval.append("\\\'"); 75 continue; 76 77 case '\\': 78 retval.append("\\\\"); 79 continue; 80 81 default: 82 if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { 83 String s = "0000" + Integer.toString(ch, 16); 84 85 retval.append("\\u" 86 + s.substring(s.length() - 4, s.length())); 87 } else { 88 retval.append(ch); 89 } 90 continue; 91 } 92 } 93 return retval.toString(); 94 } 95 96 108 private static final String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { 109 return("Lexical error at line " + errorLine + ", column " + errorColumn 110 + ". Encountered: " 111 + (EOFSeen 112 ? "<EOF> " 113 : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") 114 + " (" + (int) curChar + "), ") + "after : \"" 115 + addEscapes(errorAfter) + "\""); 116 } 117 118 127 public String getMessage() { 128 return super.getMessage(); 129 } 130 131 134 public TokenMgrError() {} 135 136 public TokenMgrError(String message, int reason) { 137 super(message); 138 errorCode = reason; 139 } 140 141 public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { 142 this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, 143 curChar), 144 reason); 145 } 146 } 147 | Popular Tags |