CharBuffer.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/CharBuffer.java#1 $
  7.  */
  8. /**A Stream of characters fed to the lexer from a InputStream that can
  9.  * be rewound via mark()/rewind() methods.
  10.  * <p>
  11.  * A dynamic array is used to buffer up all the input characters.  Normally,
  12.  * "k" characters are stored in the buffer.  More characters may be stored during
  13.  * guess mode (testing syntactic predicate), or when LT(i>k) is referenced.
  14.  * Consumption of characters is deferred.  In other words, reading the next
  15.  * character is not done by conume(), but deferred until needed by LA or LT.
  16.  * <p>
  17.  *
  18.  * @see antlr.CharQueue
  19.  */
  20. import java.io.Reader; // SAS: changed to properly read text files
  21. import java.io.IOException;
  22. // SAS: Move most functionality into InputBuffer -- just the file-specific
  23. //      stuff is in here
  24. public class CharBuffer extends InputBuffer {
  25.     // char source
  26.     transient Reader input;
  27.     /** Create a character buffer */
  28.     public CharBuffer(Reader input_) { // SAS: for proper text i/o
  29. super();
  30. input = input_;
  31.     }
  32.     /** Ensure that the character buffer is sufficiently full */
  33.     public void fill(int amount) throws CharStreamException {
  34. try {
  35.     syncConsume();
  36.     // Fill the buffer sufficiently to hold needed characters
  37.     while (queue.nbrEntries < amount + markerOffset) {
  38. // Append the next character
  39. queue.append((char) input.read());
  40.     }
  41. } catch (IOException io) {
  42.     throw new CharStreamIOException(io);
  43. }
  44.     }
  45. }