001 002 package railo.runtime.sql.old; 003 004 005 public final class TokenMgrError extends Error 006 { 007 008 protected static final String addEscapes(String s) 009 { 010 StringBuffer stringbuffer = new StringBuffer(); 011 for(int i = 0; i < s.length(); i++) 012 { 013 char c; 014 switch(s.charAt(i)) 015 { 016 case 0: // '\0' 017 break; 018 019 case 8: // '\b' 020 stringbuffer.append("\\b"); 021 break; 022 023 case 9: // '\t' 024 stringbuffer.append("\\t"); 025 break; 026 027 case 10: // '\n' 028 stringbuffer.append("\\n"); 029 break; 030 031 case 12: // '\f' 032 stringbuffer.append("\\f"); 033 break; 034 035 case 13: // '\r' 036 stringbuffer.append("\\r"); 037 break; 038 039 case 34: // '"' 040 stringbuffer.append("\\\""); 041 break; 042 043 case 39: // '\'' 044 stringbuffer.append("\\'"); 045 break; 046 047 case 92: // '\\' 048 stringbuffer.append("\\\\"); 049 break; 050 051 default: 052 if((c = s.charAt(i)) < ' ' || c > '~') 053 { 054 String s1 = "0000" + Integer.toString(c, 16); 055 stringbuffer.append("\\u" + s1.substring(s1.length() - 4, s1.length())); 056 } else 057 { 058 stringbuffer.append(c); 059 } 060 break; 061 } 062 } 063 064 return stringbuffer.toString(); 065 } 066 067 private static final String LexicalError(boolean flag, int i, int j, int k, String s, char c) 068 { 069 return "Lexical error at line " + j + ", column " + k + ". Encountered: " + (flag ? "<EOF> " : "\"" + addEscapes(String.valueOf(c)) + "\"" + " (" + (int)c + "), ") + "after : \"" + addEscapes(s) + "\""; 070 } 071 072 public String getMessage() 073 { 074 return super.getMessage(); 075 } 076 077 public TokenMgrError() 078 { 079 } 080 081 public TokenMgrError(String s, int i) 082 { 083 super(s); 084 errorCode = i; 085 } 086 087 public TokenMgrError(boolean flag, int i, int j, int k, String s, char c, int l) 088 { 089 this(LexicalError(flag, i, j, k, s, c), l); 090 } 091 092 static final int LEXICAL_ERROR = 0; 093 static final int STATIC_LEXER_ERROR = 1; 094 static final int INVALID_LEXICAL_STATE = 2; 095 static final int LOOP_DETECTED = 3; 096 int errorCode; 097 }