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>
13 #include <antlr/CircularQueue.hpp>
14 
15 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
16 namespace antlr {
17 #endif
18 
37 public:
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 
76 private:
78  void fill(unsigned int amount);
80  void syncConsume();
81 
82 protected:
85 
87  unsigned int nMarkers;
88 
90  unsigned int markerOffset;
91 
93  unsigned int numToConsume;
94 
97 
98 private:
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: ANTLRException.hpp:15
Definition: TokenRefCount.hpp:43
unsigned int numToConsume
Number of calls to consume() since last LA() or LT() call.
Definition: TokenBuffer.hpp:93
unsigned int nMarkers
Number of active markers.
Definition: TokenBuffer.hpp:87
unsigned int markerOffset
Additional offset used when markers are active.
Definition: TokenBuffer.hpp:90
#define ANTLR_API
Definition: config.hpp:22
TokenStream & input
Token source.
Definition: TokenBuffer.hpp:84
Definition: TokenBuffer.hpp:36
void syncConsume()
Definition: TokenBuffer.hpp:104
CircularQueue< RefToken > queue
Circular queue with Tokens.
Definition: TokenBuffer.hpp:96
void consume()
Definition: TokenBuffer.hpp:68
Definition: TokenStream.hpp:22
Definition: CircularQueue.hpp:24
void reset(void)
Reset the input buffer to empty state.
Definition: TokenBuffer.hpp:43