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

搜索引擎

开发平台:

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. CharStream.java Version 3.0 */
  17. using System;
  18. namespace Lucene.Net.Analysis.Standard
  19. {
  20. /// <summary> This interface describes a character stream that maintains line and
  21. /// column number positions of the characters.  It also has the capability
  22. /// to backup the stream to some extent.  An implementation of this
  23. /// interface is used in the TokenManager implementation generated by
  24. /// JavaCCParser.
  25. /// 
  26. /// All the methods except backup can be implemented in any fashion. backup
  27. /// needs to be implemented correctly for the correct operation of the lexer.
  28. /// Rest of the methods are all used to get information like line number,
  29. /// column number and the String that constitutes a token and are not used
  30. /// by the lexer. Hence their implementation won't affect the generated lexer's
  31. /// operation.
  32. /// </summary>
  33. public interface CharStream
  34. {
  35. /// <summary> Returns the next character from the selected input.  The method
  36. /// of selecting the input is the responsibility of the class
  37. /// implementing this interface.  Can throw any java.io.IOException.
  38. /// </summary>
  39. char ReadChar();
  40. /// <summary> Returns the column position of the character last read.</summary>
  41. /// <deprecated> 
  42. /// </deprecated>
  43. /// <seealso cref="getEndColumn">
  44. /// </seealso>
  45. int GetColumn();
  46. /// <summary> Returns the line number of the character last read.</summary>
  47. /// <deprecated> 
  48. /// </deprecated>
  49. /// <seealso cref="getEndLine">
  50. /// </seealso>
  51. int GetLine();
  52. /// <summary> Returns the column number of the last character for current token (being
  53. /// matched after the last call to BeginTOken).
  54. /// </summary>
  55. int GetEndColumn();
  56. /// <summary> Returns the line number of the last character for current token (being
  57. /// matched after the last call to BeginTOken).
  58. /// </summary>
  59. int GetEndLine();
  60. /// <summary> Returns the column number of the first character for current token (being
  61. /// matched after the last call to BeginTOken).
  62. /// </summary>
  63. int GetBeginColumn();
  64. /// <summary> Returns the line number of the first character for current token (being
  65. /// matched after the last call to BeginTOken).
  66. /// </summary>
  67. int GetBeginLine();
  68. /// <summary> Backs up the input stream by amount steps. Lexer calls this method if it
  69. /// had already read some characters, but could not use them to match a
  70. /// (longer) token. So, they will be used again as the prefix of the next
  71. /// token and it is the implemetation's responsibility to do this right.
  72. /// </summary>
  73. void  Backup(int amount);
  74. /// <summary> Returns the next character that marks the beginning of the next token.
  75. /// All characters must remain in the buffer between two successive calls
  76. /// to this method to implement backup correctly.
  77. /// </summary>
  78. char BeginToken();
  79. /// <summary> Returns a string made up of characters from the marked token beginning 
  80. /// to the current buffer position. Implementations have the choice of returning
  81. /// anything that they want to. For example, for efficiency, one might decide
  82. /// to just return null, which is a valid implementation.
  83. /// </summary>
  84. System.String GetImage();
  85. /// <summary> Returns an array of characters that make up the suffix of length 'len' for
  86. /// the currently matched token. This is used to build up the matched string
  87. /// for use in actions in the case of MORE. A simple and inefficient
  88. /// implementation of this is as follows :
  89. /// 
  90. /// {
  91. /// String t = GetImage();
  92. /// return t.substring(t.length() - len, t.length()).toCharArray();
  93. /// }
  94. /// </summary>
  95. char[] GetSuffix(int len);
  96. /// <summary> The lexer calls this function to indicate that it is done with the stream
  97. /// and hence implementations can free any resources held by this class.
  98. /// Again, the body of this function can be just empty and it will not
  99. /// affect the lexer's operation.
  100. /// </summary>
  101. void  Done();
  102. }
  103. }