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    }