1 /* Generated By:JavaCC: Do not edit this line. CharStream.java Version 0.7pre6 */ 2 3 /** 4 * Redistribution and use of this software and associated documentation ("Software"), with or 5 * without modification, are permitted provided that the following conditions are met: 6 * 7 * 1. Redistributions of source code must retain copyright statements and notices. Redistributions 8 * must also contain a copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of 11 * conditions and the following disclaimer in the documentation and/or other materials provided with 12 * the distribution. 13 * 14 * 3. The name "Exolab" must not be used to endorse or promote products derived from this Software 15 * without prior written permission of Intalio, Inc. For written permission, please contact 16 * info@exolab.org. 17 * 18 * 4. Products derived from this Software may not be called "Exolab" nor may "Exolab" appear in 19 * their names without prior written permission of Intalio, Inc. Exolab is a registered trademark of 20 * Intalio, Inc. 21 * 22 * 5. Due credit should be given to the Exolab Project (http://www.exolab.org/). 23 * 24 * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR 25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 26 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTALIO, INC. OR ITS 27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 30 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 31 * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 * Copyright 2000 (C) Intalio Inc. All Rights Reserved. 34 * 35 * $Id$ 36 */ 37 38 package org.exolab.castor.xml.dtd.parser; 39 40 /** 41 * This interface describes a character stream that maintains line and column number positions of 42 * the characters. It also has the capability to backup the stream to some extent. An implementation 43 * of this interface is used in the TokenManager implementation generated by JavaCCParser. 44 * <p> 45 * All the methods except backup can be implemented in any fashion. backup needs to be implemented 46 * correctly for the correct operation of the lexer. Rest of the methods are all used to get 47 * information like line number, column number and the String that constitutes a token and are not 48 * used by the lexer. Hence their implementation won't affect the generated lexer's operation. 49 * 50 * @author Generated automatically by <b>JavaCC</b> 51 * @version Version 0.7pre6 52 */ 53 abstract public interface CharStream { 54 55 /** 56 * Returns the next character from the selected input. The method of selecting the input is the 57 * responsibility of the class implementing this interface. Can throw any java.io.IOException. 58 */ 59 abstract public char readChar() throws java.io.IOException; 60 61 /** 62 * Returns the column position of the character last read. 63 * 64 * @deprecated 65 * @see #getEndColumn 66 */ 67 abstract public int getColumn(); 68 69 /** 70 * Returns the line number of the character last read. 71 * 72 * @deprecated 73 * @see #getEndLine 74 */ 75 abstract public int getLine(); 76 77 /** 78 * Returns the column number of the last character for current token (being matched after the last 79 * call to BeginTOken). 80 */ 81 abstract public int getEndColumn(); 82 83 /** 84 * Returns the line number of the last character for current token (being matched after the last 85 * call to BeginTOken). 86 */ 87 abstract public int getEndLine(); 88 89 /** 90 * Returns the column number of the first character for current token (being matched after the 91 * last call to BeginTOken). 92 */ 93 abstract public int getBeginColumn(); 94 95 /** 96 * Returns the line number of the first character for current token (being matched after the last 97 * call to BeginTOken). 98 */ 99 abstract public int getBeginLine(); 100 101 /** 102 * Backs up the input stream by amount steps. Lexer calls this method if it had already read some 103 * characters, but could not use them to match a (longer) token. So, they will be used again as 104 * the prefix of the next token and it is the implemetation's responsibility to do this right. 105 */ 106 abstract public void backup(int amount); 107 108 /** 109 * Returns the next character that marks the beginning of the next token. All characters must 110 * remain in the buffer between two successive calls to this method to implement backup correctly. 111 */ 112 abstract public char BeginToken() throws java.io.IOException; 113 114 /** 115 * Returns a string made up of characters from the marked token beginning to the current buffer 116 * position. Implementations have the choice of returning anything that they want to. For example, 117 * for efficiency, one might decide to just return null, which is a valid implementation. 118 */ 119 abstract public String GetImage(); 120 121 /** 122 * Returns an array of characters that make up the suffix of length 'len' for the currently 123 * matched token. This is used to build up the matched string for use in actions in the case of 124 * MORE. A simple and inefficient implementation of this is as follows : 125 * 126 * <pre> 127 * { 128 * String t = GetImage(); 129 * return t.substring(t.length() - len, t.length()).toCharArray(); 130 * } 131 * </pre> 132 */ 133 abstract public char[] GetSuffix(int len); 134 135 /** 136 * The lexer calls this function to indicate that it is done with the stream and hence 137 * implementations can free any resources held by this class. Again, the body of this function can 138 * be just empty and it will not affect the lexer's operation. 139 */ 140 abstract public void Done(); 141 142 }