2 * Copyright 2004 The Apache Software Foundation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
20 namespace Lucene
.Net
.Analysis
.Standard
24 public class TokenMgrError
:System
.ApplicationException
26 /// <summary> You can also modify the body of this method to customize your error messages.
27 /// For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
28 /// of end-users concern, so you can return something like :
30 /// "Internal Error : Please file a bug report .... "
32 /// from this method for such cases in the release version of your parser.
34 public override System
.String Message
43 * Ordinals for various reasons why an Error of this type can be thrown.
46 /// <summary> Lexical error occured.</summary>
47 internal const int LEXICAL_ERROR
= 0;
49 /// <summary> An attempt wass made to create a second instance of a static token manager.</summary>
50 internal const int STATIC_LEXER_ERROR
= 1;
52 /// <summary> Tried to change to an invalid lexical state.</summary>
53 internal const int INVALID_LEXICAL_STATE
= 2;
55 /// <summary> Detected (and bailed out of) an infinite loop in the token manager.</summary>
56 internal const int LOOP_DETECTED
= 3;
58 /// <summary> Indicates the reason why the exception is thrown. It will have
59 /// one of the above 4 values.
61 internal int errorCode
;
63 /// <summary> Replaces unprintable characters by their espaced (or unicode escaped)
64 /// equivalents in the given string
66 protected internal static System
.String
addEscapes(System
.String str
)
68 System
.Text
.StringBuilder retval
= new System
.Text
.StringBuilder();
70 for (int i
= 0; i
< str
.Length
; i
++)
99 retval
.Append("\\\"");
103 retval
.Append("\\\'");
107 retval
.Append("\\\\");
111 if ((ch
= str
[i
]) < 0x20 || ch
> 0x7e)
113 System
.String s
= "0000" + System
.Convert
.ToString(ch
, 16);
114 retval
.Append("\\u" + s
.Substring(s
.Length
- 4, (s
.Length
) - (s
.Length
- 4)));
124 return retval
.ToString();
127 /// <summary> Returns a detailed message for the Error when it is thrown by the
128 /// token manager to indicate a lexical error.
130 /// EOFSeen : indicates if EOF caused the lexicl error
131 /// curLexState : lexical state in which this error occured
132 /// errorLine : line number when the error occured
133 /// errorColumn : column number when the error occured
134 /// errorAfter : prefix that was seen before this error occured
135 /// curchar : the offending character
136 /// Note: You can customize the lexical error message by modifying this method.
138 protected internal static System
.String
LexicalError(bool EOFSeen
, int lexState
, int errorLine
, int errorColumn
, System
.String errorAfter
, char curChar
)
140 return ("Lexical error at line " + errorLine
+ ", column " + errorColumn
+ ". Encountered: " + (EOFSeen
?"<EOF> ":("\"" + addEscapes(System
.Convert
.ToString(curChar
)) + "\"") + " (" + (int) curChar
+ "), ") + "after : \"" + addEscapes(errorAfter
) + "\"");
144 * Constructors of various flavors follow.
147 public TokenMgrError()
151 public TokenMgrError(System
.String message
, int reason
):base(message
)
156 public TokenMgrError(bool EOFSeen
, int lexState
, int errorLine
, int errorColumn
, System
.String errorAfter
, char curChar
, int reason
):this(LexicalError(EOFSeen
, lexState
, errorLine
, errorColumn
, errorAfter
, curChar
), reason
)