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 0.7pre6 */
  17. using System;
  18. namespace Lucene.Net.Analysis.Standard
  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.IO.IOException
  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 + "." + eol);
  81. if (expectedTokenSequences.Length == 1)
  82. {
  83. retval += ("Was expecting:" + eol + "    ");
  84. }
  85. else
  86. {
  87. retval += ("Was expecting one of:" + eol + "    ");
  88. }
  89. retval += expected;
  90. return retval;
  91. }
  92. }
  93. /// <summary> This constructor is used by the method "generateParseException"
  94. /// in the generated parser.  Calling this constructor generates
  95. /// a new object of this type with the fields "currentToken",
  96. /// "expectedTokenSequences", and "tokenImage" set.  The boolean
  97. /// flag "specialConstructor" is also set to true to indicate that
  98. /// this constructor was used to create this object.
  99. /// This constructor calls its super class with the empty string
  100. /// to force the "toString" method of parent class "Throwable" to
  101. /// print the error message in the form:
  102. /// ParseException: &lt;result of getMessage&gt;
  103. /// </summary>
  104. public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, System.String[] tokenImageVal):base("")
  105. {
  106.             if (eol == null)
  107.                 eol = @"n";
  108. specialConstructor = true;
  109. currentToken = currentTokenVal;
  110. expectedTokenSequences = expectedTokenSequencesVal;
  111. tokenImage = tokenImageVal;
  112. }
  113. /// <summary> The following constructors are for use by you for whatever
  114. /// purpose you can think of.  Constructing the exception in this
  115. /// manner makes the exception behave in the normal way - i.e., as
  116. /// documented in the class "Throwable".  The fields "errorToken",
  117. /// "expectedTokenSequences", and "tokenImage" do not contain
  118. /// relevant information.  The JavaCC generated code does not use
  119. /// these constructors.
  120. /// </summary>
  121. public ParseException() : base()
  122. {
  123.             if (eol == null)
  124.                 eol = @"n";
  125.             specialConstructor = false;
  126. }
  127. public ParseException(System.String message) : base(message)
  128. {
  129.             if (eol == null)
  130.                 eol = @"n";
  131.             specialConstructor = false;
  132. }
  133. /// <summary> This variable determines which constructor was used to create
  134. /// this object and thereby affects the semantics of the
  135. /// "getMessage" method (see below).
  136. /// </summary>
  137. protected internal bool specialConstructor;
  138. /// <summary> This is the last token that has been consumed successfully.  If
  139. /// this object has been created due to a parse error, the token
  140. /// followng this token will (therefore) be the first error token.
  141. /// </summary>
  142. public Token currentToken;
  143. /// <summary> Each entry in this array is an array of integers.  Each array
  144. /// of integers represents a sequence of tokens (by their ordinal
  145. /// values) that is expected at this point of the parse.
  146. /// </summary>
  147. public int[][] expectedTokenSequences;
  148. /// <summary> This is a reference to the "tokenImage" array of the generated
  149. /// parser within which the parse error occurred.  This array is
  150. /// defined in the generated ...Constants interface.
  151. /// </summary>
  152. public System.String[] tokenImage;
  153. /// <summary> The end of line string for this machine.</summary>
  154. protected internal System.String eol = System.Configuration.ConfigurationSettings.AppSettings.Get("line.separator");
  155. /// <summary> Used to convert raw characters to their escaped version
  156. /// when these raw version cannot be used as part of an ASCII
  157. /// string literal.
  158. /// </summary>
  159. protected internal virtual System.String Add_escapes(System.String str)
  160. {
  161. System.Text.StringBuilder retval = new System.Text.StringBuilder();
  162. char ch;
  163. for (int i = 0; i < str.Length; i++)
  164. {
  165. switch (str[i])
  166. {
  167. case (char) (0): 
  168. continue;
  169. case 'b': 
  170. retval.Append("\b");
  171. continue;
  172. case 't': 
  173. retval.Append("\t");
  174. continue;
  175. case 'n': 
  176. retval.Append("\n");
  177. continue;
  178. case 'f': 
  179. retval.Append("\f");
  180. continue;
  181. case 'r': 
  182. retval.Append("\r");
  183. continue;
  184. case '"': 
  185. retval.Append("\"");
  186. continue;
  187. case ''': 
  188. retval.Append("\'");
  189. continue;
  190. case '\': 
  191. retval.Append("\\");
  192. continue;
  193. default: 
  194. if ((ch = str[i]) < 0x20 || ch > 0x7e)
  195. {
  196. System.String s = "0000" + System.Convert.ToString(ch, 16);
  197. retval.Append("\u" + s.Substring(s.Length - 4, (s.Length) - (s.Length - 4)));
  198. }
  199. else
  200. {
  201. retval.Append(ch);
  202. }
  203. continue;
  204. }
  205. }
  206. return retval.ToString();
  207. }
  208. }
  209. }