001 /* Generated By:JavaCC: Do not edit this line. CharStream.java Version 3.0 */
002 package gate.creole.annic.apache.lucene.analysis.standard;
003
004 /**
005 * This interface describes a character stream that maintains line and
006 * column number positions of the characters. It also has the capability
007 * to backup the stream to some extent. An implementation of this
008 * interface is used in the TokenManager implementation generated by
009 * JavaCCParser.
010 *
011 * All the methods except backup can be implemented in any fashion. backup
012 * needs to be implemented correctly for the correct operation of the lexer.
013 * Rest of the methods are all used to get information like line number,
014 * column number and the String that constitutes a token and are not used
015 * by the lexer. Hence their implementation won't affect the generated lexer's
016 * operation.
017 */
018
019 public interface CharStream {
020
021 /**
022 * Returns the next character from the selected input. The method
023 * of selecting the input is the responsibility of the class
024 * implementing this interface. Can throw any java.io.IOException.
025 */
026 char readChar() throws java.io.IOException;
027
028 /**
029 * Returns the column position of the character last read.
030 * @deprecated
031 * @see #getEndColumn
032 */
033 int getColumn();
034
035 /**
036 * Returns the line number of the character last read.
037 * @deprecated
038 * @see #getEndLine
039 */
040 int getLine();
041
042 /**
043 * Returns the column number of the last character for current token (being
044 * matched after the last call to BeginTOken).
045 */
046 int getEndColumn();
047
048 /**
049 * Returns the line number of the last character for current token (being
050 * matched after the last call to BeginTOken).
051 */
052 int getEndLine();
053
054 /**
055 * Returns the column number of the first character for current token (being
056 * matched after the last call to BeginTOken).
057 */
058 int getBeginColumn();
059
060 /**
061 * Returns the line number of the first character for current token (being
062 * matched after the last call to BeginTOken).
063 */
064 int getBeginLine();
065
066 /**
067 * Backs up the input stream by amount steps. Lexer calls this method if it
068 * had already read some characters, but could not use them to match a
069 * (longer) token. So, they will be used again as the prefix of the next
070 * token and it is the implemetation's responsibility to do this right.
071 */
072 void backup(int amount);
073
074 /**
075 * Returns the next character that marks the beginning of the next token.
076 * All characters must remain in the buffer between two successive calls
077 * to this method to implement backup correctly.
078 */
079 char BeginToken() throws java.io.IOException;
080
081 /**
082 * Returns a string made up of characters from the marked token beginning
083 * to the current buffer position. Implementations have the choice of returning
084 * anything that they want to. For example, for efficiency, one might decide
085 * to just return null, which is a valid implementation.
086 */
087 String GetImage();
088
089 /**
090 * Returns an array of characters that make up the suffix of length 'len' for
091 * the currently matched token. This is used to build up the matched string
092 * for use in actions in the case of MORE. A simple and inefficient
093 * implementation of this is as follows :
094 *
095 * {
096 * String t = GetImage();
097 * return t.substring(t.length() - len, t.length()).toCharArray();
098 * }
099 */
100 char[] GetSuffix(int len);
101
102 /**
103 * The lexer calls this function to indicate that it is done with the stream
104 * and hence implementations can free any resources held by this class.
105 * Again, the body of this function can be just empty and it will not
106 * affect the lexer's operation.
107 */
108 void Done();
109
110 }
|