#include <InputBuffer.hpp>
Public Member Functions | |
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 Member Functions | |
void | syncConsume () |
Protected Attributes | |
unsigned int | nMarkers |
unsigned int | markerOffset |
unsigned int | numToConsume |
CircularQueue< int > | queue |
Private Member Functions | |
InputBuffer (const InputBuffer &other) | |
InputBuffer & | operator= (const InputBuffer &other) |
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.
Definition at line 31 of file InputBuffer.hpp.
InputBuffer::InputBuffer | ( | ) | [inline] |
Create a character buffer
Definition at line 34 of file InputBuffer.hpp.
virtual InputBuffer::~InputBuffer | ( | ) | [inline, virtual] |
Definition at line 41 of file InputBuffer.hpp.
InputBuffer::InputBuffer | ( | const InputBuffer & | other | ) | [private] |
virtual void InputBuffer::reset | ( | void | ) | [inline, virtual] |
Reset the input buffer to empty state.
Reimplemented in CharInputBuffer.
Definition at line 46 of file InputBuffer.hpp.
Referenced by CharInputBuffer::reset().
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.
Definition at line 60 of file InputBuffer.hpp.
virtual void InputBuffer::consume | ( | ) | [inline, virtual] |
Mark another character for deferred consumption
Definition at line 66 of file InputBuffer.hpp.
virtual 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 int InputBuffer::LA | ( | unsigned int | i | ) | [inline, virtual] |
Get a lookahead character
Definition at line 78 of file InputBuffer.hpp.
virtual unsigned int InputBuffer::mark | ( | ) | [virtual] |
Return an integer marker that can be used to rewind the buffer to its current state.
virtual bool InputBuffer::isMarked | ( | ) | const [inline, virtual] |
virtual void InputBuffer::rewind | ( | unsigned int | mark | ) | [virtual] |
Rewind the character buffer to a marker.
mark | Marker returned previously from mark() |
virtual unsigned int InputBuffer::entries | ( | ) | const [virtual] |
Get the number of non-consumed characters
InputBuffer::ANTLR_USE_NAMESPACE | ( | std | ) | const |
InputBuffer::ANTLR_USE_NAMESPACE | ( | std | ) | const |
void InputBuffer::syncConsume | ( | ) | [inline, protected] |
Sync up deferred consumption
Definition at line 131 of file InputBuffer.hpp.
InputBuffer& InputBuffer::operator= | ( | const InputBuffer & | other | ) | [private] |
unsigned int InputBuffer::nMarkers [protected] |
Definition at line 111 of file InputBuffer.hpp.
unsigned int InputBuffer::markerOffset [protected] |
Definition at line 114 of file InputBuffer.hpp.
unsigned int InputBuffer::numToConsume [protected] |
Definition at line 117 of file InputBuffer.hpp.
CircularQueue<int> InputBuffer::queue [protected] |
Definition at line 120 of file InputBuffer.hpp.