Package antlr

Class InputBuffer

java.lang.Object
antlr.InputBuffer
Direct Known Subclasses:
ByteBuffer, CharBuffer, DebuggingInputBuffer

public abstract class InputBuffer extends Object
A Stream of characters fed to the lexer from a InputStream that can be rewound via mark()/rewind() methods.

A dynamic array is used to buffer up all the input characters. Normally, "k" characters are stored in the buffer. More characters may be stored during guess mode (testing syntactic predicate), or when LT(i>k) is referenced. Consumption of characters is deferred. In other words, reading the next character is not done by conume(), but deferred until needed by LA or LT.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
     
    protected int
     
    protected int
     
    protected CharQueue
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create an input buffer
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    This method updates the state of the input buffer so that the text matched since the most recent mark() is no longer held by the buffer.
    void
    Mark another character for deferred consumption
    abstract void
    fill(int amount)
    Ensure that the input buffer is sufficiently full
     
     
    boolean
     
    char
    LA(int i)
    Get a lookahead character
    int
    Return an integer marker that can be used to rewind the buffer to its current state.
    void
    Reset the input buffer
    void
    rewind(int mark)
    Rewind the character buffer to a marker.
    protected void
    Sync up deferred consumption

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • nMarkers

      protected int nMarkers
    • markerOffset

      protected int markerOffset
    • numToConsume

      protected int numToConsume
    • queue

      protected CharQueue queue
  • Constructor Details

    • InputBuffer

      public InputBuffer()
      Create an input buffer
  • Method Details

    • commit

      public void commit()
      This method updates the state of the input buffer so that the text matched since the most recent mark() is no longer held by the buffer. So, you either do a mark/rewind for failed predicate or mark/commit to keep on parsing without rewinding the input.
    • consume

      public void consume()
      Mark another character for deferred consumption
    • fill

      public abstract void fill(int amount) throws CharStreamException
      Ensure that the input buffer is sufficiently full
      Throws:
      CharStreamException
    • getLAChars

      public String getLAChars()
    • getMarkedChars

      public String getMarkedChars()
    • isMarked

      public boolean isMarked()
    • LA

      public char LA(int i) throws CharStreamException
      Get a lookahead character
      Throws:
      CharStreamException
    • mark

      public int mark()
      Return an integer marker that can be used to rewind the buffer to its current state.
    • rewind

      public void rewind(int mark)
      Rewind the character buffer to a marker.
      Parameters:
      mark - Marker returned previously from mark()
    • reset

      public void reset()
      Reset the input buffer
    • syncConsume

      protected void syncConsume()
      Sync up deferred consumption