Frames | No Frames |
1: /* Generated By:JavaCC: Do not edit this line. CharStream.java Version 4.0 */ 2: package org.w3c.flute.parser; 3: 4: /** 5: * This interface describes a character stream that maintains line and 6: * column number positions of the characters. It also has the capability 7: * to backup the stream to some extent. An implementation of this 8: * interface is used in the TokenManager implementation generated by 9: * JavaCCParser. 10: * 11: * All the methods except backup can be implemented in any fashion. backup 12: * needs to be implemented correctly for the correct operation of the lexer. 13: * Rest of the methods are all used to get information like line number, 14: * column number and the String that constitutes a token and are not used 15: * by the lexer. Hence their implementation won't affect the generated lexer's 16: * operation. 17: */ 18: 19: public interface CharStream { 20: 21: /** 22: * Returns the next character from the selected input. The method 23: * of selecting the input is the responsibility of the class 24: * implementing this interface. Can throw any java.io.IOException. 25: */ 26: char readChar() throws java.io.IOException; 27: 28: /** 29: * Returns the column position of the character last read. 30: * @deprecated 31: * @see #getEndColumn 32: */ 33: int getColumn(); 34: 35: /** 36: * Returns the line number of the character last read. 37: * @deprecated 38: * @see #getEndLine 39: */ 40: int getLine(); 41: 42: /** 43: * Returns the column number of the last character for current token (being 44: * matched after the last call to BeginTOken). 45: */ 46: int getEndColumn(); 47: 48: /** 49: * Returns the line number of the last character for current token (being 50: * matched after the last call to BeginTOken). 51: */ 52: int getEndLine(); 53: 54: /** 55: * Returns the column number of the first character for current token (being 56: * matched after the last call to BeginTOken). 57: */ 58: int getBeginColumn(); 59: 60: /** 61: * Returns the line number of the first character for current token (being 62: * matched after the last call to BeginTOken). 63: */ 64: int getBeginLine(); 65: 66: /** 67: * Backs up the input stream by amount steps. Lexer calls this method if it 68: * had already read some characters, but could not use them to match a 69: * (longer) token. So, they will be used again as the prefix of the next 70: * token and it is the implemetation's responsibility to do this right. 71: */ 72: void backup(int amount); 73: 74: /** 75: * Returns the next character that marks the beginning of the next token. 76: * All characters must remain in the buffer between two successive calls 77: * to this method to implement backup correctly. 78: */ 79: char BeginToken() throws java.io.IOException; 80: 81: /** 82: * Returns a string made up of characters from the marked token beginning 83: * to the current buffer position. Implementations have the choice of returning 84: * anything that they want to. For example, for efficiency, one might decide 85: * to just return null, which is a valid implementation. 86: */ 87: String GetImage(); 88: 89: /** 90: * Returns an array of characters that make up the suffix of length 'len' for 91: * the currently matched token. This is used to build up the matched string 92: * for use in actions in the case of MORE. A simple and inefficient 93: * implementation of this is as follows : 94: * 95: * { 96: * String t = GetImage(); 97: * return t.substring(t.length() - len, t.length()).toCharArray(); 98: * } 99: */ 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: }