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