ByteBuffer.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/ByteBuffer.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. // SAS: added this class to handle Binary input w/ FileInputStream
  21. import java.io.InputStream;
  22. import java.io.IOException;
  23. public class ByteBuffer extends InputBuffer{
  24.     // char source
  25.     transient InputStream input;
  26.     /** Create a character buffer */
  27.     public ByteBuffer(InputStream input_) {
  28. super();
  29. input = input_;
  30.     }
  31.     /** Ensure that the character buffer is sufficiently full */
  32.     public void fill(int amount) throws CharStreamException {
  33. try {
  34.     syncConsume();
  35.     // Fill the buffer sufficiently to hold needed characters
  36.     while (queue.nbrEntries < amount + markerOffset) {
  37. // Append the next character
  38. queue.append((char) input.read());
  39.     }
  40. } catch (IOException io) {
  41.     throw new CharStreamIOException(io);
  42. }
  43.     }
  44. }