1:
2:
3: package ;
4:
5:
6: public class TokenMgrError extends Error
7: {
8:
9:
12:
13:
16: static final int LEXICAL_ERROR = 0;
17:
18:
21: static final int STATIC_LEXER_ERROR = 1;
22:
23:
26: static final int INVALID_LEXICAL_STATE = 2;
27:
28:
31: static final int LOOP_DETECTED = 3;
32:
33:
37: int errorCode;
38:
39:
43: protected static final String addEscapes(String str) {
44: StringBuffer retval = new StringBuffer();
45: char ch;
46: for (int i = 0; i < str.length(); i++) {
47: switch (str.charAt(i))
48: {
49: case 0 :
50: continue;
51: case '\b':
52: retval.append("\\b");
53: continue;
54: case '\t':
55: retval.append("\\t");
56: continue;
57: case '\n':
58: retval.append("\\n");
59: continue;
60: case '\f':
61: retval.append("\\f");
62: continue;
63: case '\r':
64: retval.append("\\r");
65: continue;
66: case '\"':
67: retval.append("\\\"");
68: continue;
69: case '\'':
70: retval.append("\\\'");
71: continue;
72: case '\\':
73: retval.append("\\\\");
74: continue;
75: default:
76: if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
77: String s = "0000" + Integer.toString(ch, 16);
78: retval.append("\\u" + s.substring(s.length() - 4, s.length()));
79: } else {
80: retval.append(ch);
81: }
82: continue;
83: }
84: }
85: return retval.toString();
86: }
87:
88:
100: protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
101: return("Lexical error at line " +
102: errorLine + ", column " +
103: errorColumn + ". Encountered: " +
104: (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
105: "after : \"" + addEscapes(errorAfter) + "\"");
106: }
107:
108:
117: public String getMessage() {
118: return super.getMessage();
119: }
120:
121:
124:
125:
126: public TokenMgrError() {
127: }
128:
129:
130: public TokenMgrError(String message, int reason) {
131: super(message);
132: errorCode = reason;
133: }
134:
135:
136: public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
137: this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
138: }
139: }
140: