Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

InputBuffer Class Reference

#include <InputBuffer.hpp>

Inheritance diagram for InputBuffer:

CharBuffer CharInputBuffer List of all members.

Public Methods

 InputBuffer ()
virtual ~InputBuffer ()
virtual void reset (void)
 Reset the input buffer to empty state.

void commit (void)
virtual void consume ()
virtual void fill (unsigned int amount)
virtual int getChar ()=0
virtual int LA (unsigned int i)
virtual unsigned int mark ()
virtual bool isMarked () const
 Are there any marks active in the InputBuffer.

virtual void rewind (unsigned int mark)
virtual unsigned int entries () const
 ANTLR_USE_NAMESPACE (std) string getLAChars() const
 ANTLR_USE_NAMESPACE (std) string getMarkedChars() const

Protected Methods

void syncConsume ()

Protected Attributes

unsigned int nMarkers
unsigned int markerOffset
unsigned int numToConsume
CircularQueue< int > queue

Detailed Description

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:
antlr.CharQueue


Constructor & Destructor Documentation

InputBuffer::InputBuffer   [inline]
 

Create a character buffer

virtual InputBuffer::~InputBuffer   [inline, virtual]
 


Member Function Documentation

InputBuffer::ANTLR_USE_NAMESPACE std    const
 

InputBuffer::ANTLR_USE_NAMESPACE std    const
 

void InputBuffer::commit void    [inline]
 

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.

virtual void InputBuffer::consume   [inline, virtual]
 

Mark another character for deferred consumption

unsigned int InputBuffer::entries   [virtual]
 

Get the number of non-consumed characters

void InputBuffer::fill unsigned int    amount [virtual]
 

Ensure that the character buffer is sufficiently full

virtual int InputBuffer::getChar   [pure virtual]
 

Override this in subclasses to get the next character

Implemented in CharBuffer, and CharInputBuffer.

virtual bool InputBuffer::isMarked   const [inline, virtual]
 

Are there any marks active in the InputBuffer.

virtual int InputBuffer::LA unsigned int    i [inline, virtual]
 

Get a lookahead character

unsigned int InputBuffer::mark   [virtual]
 

Return an integer marker that can be used to rewind the buffer to its current state.

virtual void InputBuffer::reset void    [inline, virtual]
 

Reset the input buffer to empty state.

Reimplemented in CharInputBuffer.

void InputBuffer::rewind unsigned int    mark [virtual]
 

Rewind the character buffer to a marker.

Parameters:
mark  Marker returned previously from mark()

void InputBuffer::syncConsume   [inline, protected]
 

Sync up deferred consumption


Member Data Documentation

unsigned int InputBuffer::markerOffset [protected]
 

unsigned int InputBuffer::nMarkers [protected]
 

unsigned int InputBuffer::numToConsume [protected]
 

CircularQueue<int> InputBuffer::queue [protected]
 


The documentation for this class was generated from the following files:
Generated on Wed Nov 3 12:59:40 2004 for Lemur Toolkit by doxygen1.2.18