1 | /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ |
2 | /* JavaCCOptions: */ |
3 | /* |
4 | * Copyright (C) Christian Schulte, 2005-206 |
5 | * All rights reserved. |
6 | * |
7 | * Redistribution and use in source and binary forms, with or without |
8 | * modification, are permitted provided that the following conditions |
9 | * are met: |
10 | * |
11 | * o Redistributions of source code must retain the above copyright |
12 | * notice, this list of conditions and the following disclaimer. |
13 | * |
14 | * o Redistributions in binary form must reproduce the above copyright |
15 | * notice, this list of conditions and the following disclaimer in |
16 | * the documentation and/or other materials provided with the |
17 | * distribution. |
18 | * |
19 | * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
20 | * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY |
21 | * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL |
22 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, |
23 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
24 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
28 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 | * |
30 | * $JOMC: VersionParser.jj 4613 2012-09-22 10:07:08Z schulte $ |
31 | * |
32 | */ |
33 | package org.jomc.util; |
34 | |
35 | /** Token Manager Error. */ |
36 | public class TokenMgrError extends Error |
37 | { |
38 | |
39 | /** |
40 | * The version identifier for this Serializable class. |
41 | * Increment only if the <i>serialized</i> form of the |
42 | * class changes. |
43 | */ |
44 | private static final long serialVersionUID = 1L; |
45 | |
46 | /* |
47 | * Ordinals for various reasons why an Error of this type can be thrown. |
48 | */ |
49 | |
50 | /** |
51 | * Lexical error occurred. |
52 | */ |
53 | static final int LEXICAL_ERROR = 0; |
54 | |
55 | /** |
56 | * An attempt was made to create a second instance of a static token manager. |
57 | */ |
58 | static final int STATIC_LEXER_ERROR = 1; |
59 | |
60 | /** |
61 | * Tried to change to an invalid lexical state. |
62 | */ |
63 | static final int INVALID_LEXICAL_STATE = 2; |
64 | |
65 | /** |
66 | * Detected (and bailed out of) an infinite loop in the token manager. |
67 | */ |
68 | static final int LOOP_DETECTED = 3; |
69 | |
70 | /** |
71 | * Indicates the reason why the exception is thrown. It will have |
72 | * one of the above 4 values. |
73 | */ |
74 | int errorCode; |
75 | |
76 | /** |
77 | * Replaces unprintable characters by their escaped (or unicode escaped) |
78 | * equivalents in the given string |
79 | */ |
80 | protected static final String addEscapes(String str) { |
81 | StringBuffer retval = new StringBuffer(); |
82 | char ch; |
83 | for (int i = 0; i < str.length(); i++) { |
84 | switch (str.charAt(i)) |
85 | { |
86 | case 0 : |
87 | continue; |
88 | case '\b': |
89 | retval.append("\\b"); |
90 | continue; |
91 | case '\t': |
92 | retval.append("\\t"); |
93 | continue; |
94 | case '\n': |
95 | retval.append("\\n"); |
96 | continue; |
97 | case '\f': |
98 | retval.append("\\f"); |
99 | continue; |
100 | case '\r': |
101 | retval.append("\\r"); |
102 | continue; |
103 | case '\"': |
104 | retval.append("\\\""); |
105 | continue; |
106 | case '\'': |
107 | retval.append("\\\'"); |
108 | continue; |
109 | case '\\': |
110 | retval.append("\\\\"); |
111 | continue; |
112 | default: |
113 | if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { |
114 | String s = "0000" + Integer.toString(ch, 16); |
115 | retval.append("\\u" + s.substring(s.length() - 4, s.length())); |
116 | } else { |
117 | retval.append(ch); |
118 | } |
119 | continue; |
120 | } |
121 | } |
122 | return retval.toString(); |
123 | } |
124 | |
125 | /** |
126 | * Returns a detailed message for the Error when it is thrown by the |
127 | * token manager to indicate a lexical error. |
128 | * Parameters : |
129 | * EOFSeen : indicates if EOF caused the lexical error |
130 | * curLexState : lexical state in which this error occurred |
131 | * errorLine : line number when the error occurred |
132 | * errorColumn : column number when the error occurred |
133 | * errorAfter : prefix that was seen before this error occurred |
134 | * curchar : the offending character |
135 | * Note: You can customize the lexical error message by modifying this method. |
136 | */ |
137 | protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { |
138 | return("Lexical error at line " + |
139 | errorLine + ", column " + |
140 | errorColumn + ". Encountered: " + |
141 | (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + |
142 | "after : \"" + addEscapes(errorAfter) + "\""); |
143 | } |
144 | |
145 | /** |
146 | * You can also modify the body of this method to customize your error messages. |
147 | * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not |
148 | * of end-users concern, so you can return something like : |
149 | * |
150 | * "Internal Error : Please file a bug report .... " |
151 | * |
152 | * from this method for such cases in the release version of your parser. |
153 | */ |
154 | public String getMessage() { |
155 | return super.getMessage(); |
156 | } |
157 | |
158 | /* |
159 | * Constructors of various flavors follow. |
160 | */ |
161 | |
162 | /** No arg constructor. */ |
163 | public TokenMgrError() { |
164 | } |
165 | |
166 | /** Constructor with message and reason. */ |
167 | public TokenMgrError(String message, int reason) { |
168 | super(message); |
169 | errorCode = reason; |
170 | } |
171 | |
172 | /** Full Constructor. */ |
173 | public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { |
174 | this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); |
175 | } |
176 | } |
177 | /* JavaCC - OriginalChecksum=ad1c6b56676c3e8d7f428eaaaf21247f (do not edit this line) */ |