1 |
#ifndef INC_CharBuffer_hpp__ |
2 |
#define INC_CharBuffer_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$ |
9 |
*/ |
10 |
|
11 |
#include <antlr/config.hpp> |
12 |
|
13 |
#include <istream> |
14 |
|
15 |
#include <antlr/InputBuffer.hpp> |
16 |
|
17 |
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE |
18 |
namespace antlr { |
19 |
#endif |
20 |
|
21 |
/**A Stream of characters fed to the lexer from a InputStream that can |
22 |
* be rewound via mark()/rewind() methods. |
23 |
* <p> |
24 |
* A dynamic array is used to buffer up all the input characters. Normally, |
25 |
* "k" characters are stored in the buffer. More characters may be stored |
26 |
* during guess mode (testing syntactic predicate), or when LT(i>k) is |
27 |
* referenced. |
28 |
* Consumption of characters is deferred. In other words, reading the next |
29 |
* character is not done by consume(), but deferred until needed by LA or LT. |
30 |
* <p> |
31 |
* |
32 |
* @see antlr.CharQueue |
33 |
*/ |
34 |
|
35 |
class ANTLR_API CharBuffer : public InputBuffer { |
36 |
public: |
37 |
/// Create a character buffer |
38 |
CharBuffer( ANTLR_USE_NAMESPACE(std)istream& input ); |
39 |
/// Get the next character from the stream |
40 |
int getChar(); |
41 |
|
42 |
protected: |
43 |
// character source |
44 |
ANTLR_USE_NAMESPACE(std)istream& input; |
45 |
|
46 |
private: |
47 |
// NOTE: Unimplemented |
48 |
CharBuffer(const CharBuffer& other); |
49 |
CharBuffer& operator=(const CharBuffer& other); |
50 |
}; |
51 |
|
52 |
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE |
53 |
} |
54 |
#endif |
55 |
|
56 |
#endif //INC_CharBuffer_hpp__ |