ANTLR Support Libraries 2.7.1+
TokenBuffer.hpp
Go to the documentation of this file.
1#ifndef INC_TokenBuffer_hpp__
2#define INC_TokenBuffer_hpp__
3
4/* ANTLR Translator Generator
5 * Project led by Terence Parr at http://www.jGuru.com
6 * Software rights: http://www.antlr.org/license.html
7 *
8 * $Id: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/antlr/TokenBuffer.hpp#2 $
9 */
10
11#include <antlr/config.hpp>
12#include <antlr/TokenStream.hpp>
14
15#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
16namespace antlr {
17#endif
18
37public:
39 TokenBuffer(TokenStream& input_);
40 virtual ~TokenBuffer();
41
43 inline void reset( void )
44 {
45 nMarkers = 0;
46 markerOffset = 0;
47 numToConsume = 0;
48 queue.clear();
49 }
50
52 int LA( unsigned int i );
53
55 RefToken LT( unsigned int i );
56
60 unsigned int mark();
61
65 void rewind(unsigned int mark);
66
68 inline void consume()
69 {
70 numToConsume++;
71 }
72
74 virtual unsigned int entries() const;
75
76private:
78 void fill(unsigned int amount);
80 void syncConsume();
81
82protected:
85
87 unsigned int nMarkers;
88
90 unsigned int markerOffset;
91
93 unsigned int numToConsume;
94
97
98private:
99 TokenBuffer(const TokenBuffer& other);
100 const TokenBuffer& operator=(const TokenBuffer& other);
101};
102
105{
106 if (numToConsume > 0)
107 {
108 if (nMarkers > 0)
109 markerOffset += numToConsume;
110 else
111 queue.removeItems( numToConsume );
112
113 numToConsume = 0;
114 }
115}
116
117#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
118}
119#endif
120
121#endif //INC_TokenBuffer_hpp__
Definition: CircularQueue.hpp:24
Definition: TokenBuffer.hpp:36
void consume()
Definition: TokenBuffer.hpp:68
const TokenBuffer & operator=(const TokenBuffer &other)
void syncConsume()
Definition: TokenBuffer.hpp:104
void reset(void)
Reset the input buffer to empty state.
Definition: TokenBuffer.hpp:43
unsigned int markerOffset
Additional offset used when markers are active.
Definition: TokenBuffer.hpp:90
TokenStream & input
Token source.
Definition: TokenBuffer.hpp:84
unsigned int nMarkers
Number of active markers.
Definition: TokenBuffer.hpp:87
CircularQueue< RefToken > queue
Circular queue with Tokens.
Definition: TokenBuffer.hpp:96
unsigned int numToConsume
Number of calls to consume() since last LA() or LT() call.
Definition: TokenBuffer.hpp:93
TokenBuffer(const TokenBuffer &other)
Definition: TokenStream.hpp:22
#define ANTLR_API
Definition: config.hpp:22
Definition: ANTLRException.hpp:15