ParseException.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:7k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  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
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  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.
  15.  */
  16. /* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
  17. using System;
  18. namespace Lucene.Net.QueryParsers
  19. {
  20. /// <summary> This exception is thrown when parse errors are encountered.
  21. /// You can explicitly create objects of this exception type by
  22. /// calling the method generateParseException in the generated
  23. /// parser.
  24. /// 
  25. /// You can modify this class to customize your error reporting
  26. /// mechanisms so long as you retain the public fields.
  27. /// </summary>
  28. [Serializable]
  29. public class ParseException : System.Exception
  30. {
  31. /// <summary> This method has the standard behavior when this object has been
  32. /// created using the standard constructors.  Otherwise, it uses
  33. /// "currentToken" and "expectedTokenSequences" to generate a parse
  34. /// error message and returns it.  If this object has been created
  35. /// due to a parse error, and you do not catch it (it gets thrown
  36. /// from the parser), then this method is called during the printing
  37. /// of the final stack trace, and hence the correct error message
  38. /// gets displayed.
  39. /// </summary>
  40. public override System.String Message
  41. {
  42. get
  43. {
  44. if (!specialConstructor)
  45. {
  46. return base.Message;
  47. }
  48. System.String expected = "";
  49. int maxSize = 0;
  50. for (int i = 0; i < expectedTokenSequences.Length; i++)
  51. {
  52. if (maxSize < expectedTokenSequences[i].Length)
  53. {
  54. maxSize = expectedTokenSequences[i].Length;
  55. }
  56. for (int j = 0; j < expectedTokenSequences[i].Length; j++)
  57. {
  58. expected += (tokenImage[expectedTokenSequences[i][j]] + " ");
  59. }
  60. if (expectedTokenSequences[i][expectedTokenSequences[i].Length - 1] != 0)
  61. {
  62. expected += "...";
  63. }
  64. expected += (eol + "    ");
  65. }
  66. System.String retval = "Encountered "";
  67. Token tok = currentToken.next;
  68. for (int i = 0; i < maxSize; i++)
  69. {
  70. if (i != 0)
  71. retval += " ";
  72. if (tok.kind == 0)
  73. {
  74. retval += tokenImage[0];
  75. break;
  76. }
  77. retval += Add_escapes(tok.image);
  78. tok = tok.next;
  79. }
  80. retval += ("" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn);
  81. retval += ("." + eol);
  82. if (expectedTokenSequences.Length == 1)
  83. {
  84. retval += ("Was expecting:" + eol + "    ");
  85. }
  86. else
  87. {
  88. retval += ("Was expecting one of:" + eol + "    ");
  89. }
  90. retval += expected;
  91. return retval;
  92. }
  93. }
  94. /// <summary> This constructor is used by the method "generateParseException"
  95. /// in the generated parser.  Calling this constructor generates
  96. /// a new object of this type with the fields "currentToken",
  97. /// "expectedTokenSequences", and "tokenImage" set.  The boolean
  98. /// flag "specialConstructor" is also set to true to indicate that
  99. /// this constructor was used to create this object.
  100. /// This constructor calls its super class with the empty string
  101. /// to force the "toString" method of parent class "Throwable" to
  102. /// print the error message in the form:
  103. /// ParseException: <result of getMessage>
  104. /// </summary>
  105. public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, System.String[] tokenImageVal):base("")
  106. {
  107. specialConstructor = true;
  108. currentToken = currentTokenVal;
  109. expectedTokenSequences = expectedTokenSequencesVal;
  110. tokenImage = tokenImageVal;
  111. }
  112. /// <summary> The following constructors are for use by you for whatever
  113. /// purpose you can think of.  Constructing the exception in this
  114. /// manner makes the exception behave in the normal way - i.e., as
  115. /// documented in the class "Throwable".  The fields "errorToken",
  116. /// "expectedTokenSequences", and "tokenImage" do not contain
  117. /// relevant information.  The JavaCC generated code does not use
  118. /// these constructors.
  119. /// </summary>
  120. public ParseException():base()
  121. {
  122. specialConstructor = false;
  123. }
  124. public ParseException(System.String message) : base(message)
  125. {
  126. specialConstructor = false;
  127. }
  128. /// <summary> This variable determines which constructor was used to create
  129. /// this object and thereby affects the semantics of the
  130. /// "getMessage" method (see below).
  131. /// </summary>
  132. protected internal bool specialConstructor;
  133. /// <summary> This is the last token that has been consumed successfully.  If
  134. /// this object has been created due to a parse error, the token
  135. /// followng this token will (therefore) be the first error token.
  136. /// </summary>
  137. public Token currentToken;
  138. /// <summary> Each entry in this array is an array of integers.  Each array
  139. /// of integers represents a sequence of tokens (by their ordinal
  140. /// values) that is expected at this point of the parse.
  141. /// </summary>
  142. public int[][] expectedTokenSequences;
  143. /// <summary> This is a reference to the "tokenImage" array of the generated
  144. /// parser within which the parse error occurred.  This array is
  145. /// defined in the generated ...Constants interface.
  146. /// </summary>
  147. public System.String[] tokenImage;
  148. /// <summary> The end of line string for this machine.</summary>
  149. protected internal System.String eol = SupportClass.AppSettings.Get("line.separator", "n");
  150. /// <summary> Used to convert raw characters to their escaped version
  151. /// when these raw version cannot be used as part of an ASCII
  152. /// string literal.
  153. /// </summary>
  154. protected internal virtual System.String Add_escapes(System.String str)
  155. {
  156. System.Text.StringBuilder retval = new System.Text.StringBuilder();
  157. char ch;
  158. for (int i = 0; i < str.Length; i++)
  159. {
  160. switch (str[i])
  161. {
  162. case (char) (0): 
  163. continue;
  164. case 'b': 
  165. retval.Append("\b");
  166. continue;
  167. case 't': 
  168. retval.Append("\t");
  169. continue;
  170. case 'n': 
  171. retval.Append("\n");
  172. continue;
  173. case 'f': 
  174. retval.Append("\f");
  175. continue;
  176. case 'r': 
  177. retval.Append("\r");
  178. continue;
  179. case '"': 
  180. retval.Append("\"");
  181. continue;
  182. case ''': 
  183. retval.Append("\'");
  184. continue;
  185. case '\': 
  186. retval.Append("\\");
  187. continue;
  188. default: 
  189. if ((ch = str[i]) < 0x20 || ch > 0x7e)
  190. {
  191. System.String s = "0000" + System.Convert.ToString(ch, 16);
  192. retval.Append("\u" + s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
  193. }
  194. else
  195. {
  196. retval.Append(ch);
  197. }
  198. continue;
  199. }
  200. }
  201. return retval.ToString();
  202. }
  203. }
  204. }