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

搜索引擎

开发平台:

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. StandardTokenizer.java */
  17. using System;
  18. namespace Lucene.Net.Analysis.Standard
  19. {
  20. /// <summary>A grammar-based tokenizer constructed with JavaCC.
  21. /// 
  22. /// <p> This should be a good tokenizer for most European-language documents:
  23. /// 
  24. /// <ul>
  25. /// <li>Splits words at punctuation characters, removing punctuation. However, a 
  26. /// dot that's not followed by whitespace is considered part of a token.
  27. /// <li>Splits words at hyphens, unless there's a number in the token, in which case
  28. /// the whole token is interpreted as a product number and is not split.
  29. /// <li>Recognizes email addresses and internet hostnames as one token.
  30. /// </ul>
  31. /// 
  32. /// <p>Many applications have specific tokenizer needs.  If this tokenizer does
  33. /// not suit your application, please consider copying this source code
  34. /// directory to your project and maintaining your own grammar-based tokenizer.
  35. /// </summary>
  36. public class StandardTokenizer : Lucene.Net.Analysis.Tokenizer
  37. {
  38. /// <summary>Constructs a tokenizer for this Reader. </summary>
  39. public StandardTokenizer(System.IO.TextReader reader) : this(new FastCharStream(reader))
  40. {
  41. this.input = reader;
  42. }
  43. /// <summary>Returns the next token in the stream, or null at EOS.
  44. /// <p>The returned token's type is set to an element of {@link
  45. /// StandardTokenizerConstants#tokenImage}.
  46. /// </summary>
  47. public override Lucene.Net.Analysis.Token Next()
  48. {
  49. Token token = null;
  50. switch ((jj_ntk == - 1) ? Jj_ntk() : jj_ntk)
  51. {
  52. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.ALPHANUM: 
  53. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.ALPHANUM);
  54. break;
  55. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.APOSTROPHE: 
  56. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.APOSTROPHE);
  57. break;
  58. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.ACRONYM: 
  59. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.ACRONYM);
  60. break;
  61. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.COMPANY: 
  62. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.COMPANY);
  63. break;
  64. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.EMAIL: 
  65. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.EMAIL);
  66. break;
  67. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.HOST: 
  68. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.HOST);
  69. break;
  70. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.NUM: 
  71. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.NUM);
  72. break;
  73. case Lucene.Net.Analysis.Standard.StandardTokenizerConstants.CJ: 
  74. token = Jj_consume_token(Lucene.Net.Analysis.Standard.StandardTokenizerConstants.CJ);
  75. break;
  76. case 0: 
  77. token = Jj_consume_token(0);
  78. break;
  79. default: 
  80. jj_la1[0] = jj_gen;
  81. Jj_consume_token(- 1);
  82. throw new ParseException();
  83. }
  84. if (token.kind == Lucene.Net.Analysis.Standard.StandardTokenizerConstants.EOF)
  85. {
  86. {
  87. if (true)
  88. return null;
  89. }
  90. }
  91. else
  92. {
  93. {
  94. if (true)
  95. return new Lucene.Net.Analysis.Token(token.image, token.beginColumn, token.endColumn, Lucene.Net.Analysis.Standard.StandardTokenizerConstants.tokenImage[token.kind]);
  96. }
  97. }
  98. throw new System.ApplicationException("Missing return statement in function");
  99. }
  100.         /// <summary>By default, closes the input Reader. </summary>
  101.         public override void Close() 
  102.         { 
  103.             token_source.Close(); 
  104.             base.Close(); 
  105.         }
  106.         public StandardTokenizerTokenManager token_source;
  107. public Token token, jj_nt;
  108. private int jj_ntk;
  109. private int jj_gen;
  110. private int[] jj_la1 = new int[1];
  111. private static int[] jj_la1_0_Renamed_Field;
  112. private static void  jj_la1_0()
  113. {
  114. jj_la1_0_Renamed_Field = new int[]{0x10ff};
  115. }
  116. public StandardTokenizer(CharStream stream)
  117. {
  118. token_source = new StandardTokenizerTokenManager(stream);
  119. token = new Token();
  120. jj_ntk = - 1;
  121. jj_gen = 0;
  122. for (int i = 0; i < 1; i++)
  123. jj_la1[i] = - 1;
  124. }
  125. public virtual void  ReInit(CharStream stream)
  126. {
  127. token_source.ReInit(stream);
  128. token = new Token();
  129. jj_ntk = - 1;
  130. jj_gen = 0;
  131. for (int i = 0; i < 1; i++)
  132. jj_la1[i] = - 1;
  133. }
  134. public StandardTokenizer(StandardTokenizerTokenManager tm)
  135. {
  136. token_source = tm;
  137. token = new Token();
  138. jj_ntk = - 1;
  139. jj_gen = 0;
  140. for (int i = 0; i < 1; i++)
  141. jj_la1[i] = - 1;
  142. }
  143. public virtual void  ReInit(StandardTokenizerTokenManager tm)
  144. {
  145. token_source = tm;
  146. token = new Token();
  147. jj_ntk = - 1;
  148. jj_gen = 0;
  149. for (int i = 0; i < 1; i++)
  150. jj_la1[i] = - 1;
  151. }
  152. private Token Jj_consume_token(int kind)
  153. {
  154. Token oldToken;
  155. if ((oldToken = token).next != null)
  156. token = token.next;
  157. else
  158. token = token.next = token_source.GetNextToken();
  159. jj_ntk = - 1;
  160. if (token.kind == kind)
  161. {
  162. jj_gen++;
  163. return token;
  164. }
  165. token = oldToken;
  166. jj_kind = kind;
  167. throw GenerateParseException();
  168. }
  169. public Token GetNextToken()
  170. {
  171. if (token.next != null)
  172. token = token.next;
  173. else
  174. token = token.next = token_source.GetNextToken();
  175. jj_ntk = - 1;
  176. jj_gen++;
  177. return token;
  178. }
  179. public Token GetToken(int index)
  180. {
  181. Token t = token;
  182. for (int i = 0; i < index; i++)
  183. {
  184. if (t.next != null)
  185. t = t.next;
  186. else
  187. t = t.next = token_source.GetNextToken();
  188. }
  189. return t;
  190. }
  191. private int Jj_ntk()
  192. {
  193. if ((jj_nt = token.next) == null)
  194. return (jj_ntk = (token.next = token_source.GetNextToken()).kind);
  195. else
  196. return (jj_ntk = jj_nt.kind);
  197. }
  198. private System.Collections.ArrayList jj_expentries = System.Collections.ArrayList.Synchronized(new System.Collections.ArrayList(10));
  199. private int[] jj_expentry;
  200. private int jj_kind = - 1;
  201. public virtual ParseException GenerateParseException()
  202. {
  203. jj_expentries.Clear();
  204. bool[] la1tokens = new bool[16];
  205. for (int i = 0; i < 16; i++)
  206. {
  207. la1tokens[i] = false;
  208. }
  209. if (jj_kind >= 0)
  210. {
  211. la1tokens[jj_kind] = true;
  212. jj_kind = - 1;
  213. }
  214. for (int i = 0; i < 1; i++)
  215. {
  216. if (jj_la1[i] == jj_gen)
  217. {
  218. for (int j = 0; j < 32; j++)
  219. {
  220. if ((jj_la1_0_Renamed_Field[i] & (1 << j)) != 0)
  221. {
  222. la1tokens[j] = true;
  223. }
  224. }
  225. }
  226. }
  227. for (int i = 0; i < 16; i++)
  228. {
  229. if (la1tokens[i])
  230. {
  231. jj_expentry = new int[1];
  232. jj_expentry[0] = i;
  233. jj_expentries.Add(jj_expentry);
  234. }
  235. }
  236. int[][] exptokseq = new int[jj_expentries.Count][];
  237. for (int i = 0; i < jj_expentries.Count; i++)
  238. {
  239. exptokseq[i] = (int[]) jj_expentries[i];
  240. }
  241. return new ParseException(token, exptokseq, Lucene.Net.Analysis.Standard.StandardTokenizerConstants.tokenImage);
  242. }
  243. public void  Enable_tracing()
  244. {
  245. }
  246. public void  Disable_tracing()
  247. {
  248. }
  249. static StandardTokenizer()
  250. {
  251. {
  252. jj_la1_0();
  253. }
  254. }
  255. }
  256. }