1 #ifndef INC_TokenStreamRewriteEngine_hpp__ 2 #define INC_TokenStreamRewriteEngine_hpp__ 25 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 82 #ifndef NO_STATIC_CONSTS 88 PROGRAM_INIT_SIZE = 100
94 template <
typename T>
void operator() (
const T& t ) {
103 : index(idx), text(txt)
119 virtual const char*
type()
const {
120 return "RewriteOperation";
153 virtual const char*
type()
const {
154 return "InsertBeforeOp";
171 virtual const char*
type()
const {
184 virtual const char*
type()
const {
196 rollback(DEFAULT_PROGRAM_NAME, instructionIndex);
204 size_t instructionIndex );
207 deleteProgram(DEFAULT_PROGRAM_NAME);
212 rollback(programName, MIN_TOKEN_INDEX);
218 insertAfter(DEFAULT_PROGRAM_NAME, t, text);
222 insertAfter(DEFAULT_PROGRAM_NAME, index, text);
229 insertAfter(programName, t->getIndex(), text);
237 insertBefore(programName,index+1, text);
244 insertBefore(DEFAULT_PROGRAM_NAME, t, text);
248 insertBefore(DEFAULT_PROGRAM_NAME, index, text);
255 insertBefore(programName, t->getIndex(), text);
262 addToSortedRewriteList(programName,
new InsertBeforeOp(index,text));
267 replace(DEFAULT_PROGRAM_NAME, index, index, text);
273 replace(DEFAULT_PROGRAM_NAME, from, to, text);
279 replace(DEFAULT_PROGRAM_NAME, indexT->getIndex(), indexT->getIndex(), text);
286 replace(DEFAULT_PROGRAM_NAME, from, to, text);
290 size_t from,
size_t to,
293 addToSortedRewriteList(programName,
new ReplaceOp(from, to, text));
307 void remove(
size_t index) {
308 remove(DEFAULT_PROGRAM_NAME, index, index);
311 void remove(
size_t from,
size_t to) {
312 remove(DEFAULT_PROGRAM_NAME, from, to);
316 remove(DEFAULT_PROGRAM_NAME, indexT, indexT);
320 remove(DEFAULT_PROGRAM_NAME, from, to);
324 size_t from,
size_t to)
326 replace(programName,from,to,
"");
332 replace(programName,from,to,
"");
336 discardMask.add(ttype);
345 return tokens.size();
353 size_t start,
size_t end )
const;
356 toStream( out, MIN_TOKEN_INDEX, getTokenStreamSize());
362 toStream( out, programName, MIN_TOKEN_INDEX, getTokenStreamSize());
366 size_t start,
size_t end )
const 368 toStream(out, DEFAULT_PROGRAM_NAME, start, end);
373 size_t firstToken,
size_t lastToken )
const;
376 toDebugStream( out, MIN_TOKEN_INDEX, getTokenStreamSize());
380 size_t start,
size_t end )
const;
383 return getLastRewriteTokenIndex(DEFAULT_PROGRAM_NAME);
391 program_map::const_iterator rewrites = programs.find(programName);
393 if( rewrites == programs.end() )
399 operation_list::const_iterator last = prog.end();
401 return (*last)->getIndex();
410 addToSortedRewriteList(DEFAULT_PROGRAM_NAME, op);
414 RewriteOperation* op );
435 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE Definition: ANTLRException.hpp:15
Definition: TokenRefCount.hpp:43
Definition: TokenStreamRewriteEngine.hpp:127
void insertAfter(const std ::string &programName, size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:232
void replace(RefTokenWithIndex from, RefTokenWithIndex to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:282
Definition: TokenStreamRewriteEngine.hpp:100
void deleteProgram()
Definition: TokenStreamRewriteEngine.hpp:206
static const size_t MIN_TOKEN_INDEX
Definition: TokenStreamRewriteEngine.hpp:83
void replace(size_t from, size_t to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:270
std ::string text
Definition: TokenStreamRewriteEngine.hpp:124
static const int PROGRAM_INIT_SIZE
Definition: TokenStreamRewriteEngine.hpp:84
void replace(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:265
InsertBeforeOp(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:143
void addToSortedRewriteList(RewriteOperation *op)
Definition: TokenStreamRewriteEngine.hpp:409
virtual size_t execute(std ::ostream &)
Definition: TokenStreamRewriteEngine.hpp:113
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:171
std ::ostream & out
Definition: TokenStreamRewriteEngine.hpp:97
void insertAfter(const std ::string &programName, RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:225
void insertAfter(RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:215
size_t index
Definition: TokenStreamRewriteEngine.hpp:123
Definition: TokenStreamRewriteEngine.hpp:178
ReplaceOp(size_t from, size_t to, std ::string text)
Definition: TokenStreamRewriteEngine.hpp:161
std ::list< RewriteOperation * > operation_list
list of rewrite operations
Definition: TokenStreamRewriteEngine.hpp:136
size_t getLastRewriteTokenIndex(const std ::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:390
TokenStream & stream
Definition: TokenStreamRewriteEngine.hpp:418
void toDebugStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:375
Definition: TokenStreamRewriteEngine.hpp:77
virtual ~InsertBeforeOp()
Definition: TokenStreamRewriteEngine.hpp:147
void replace(RefTokenWithIndex indexT, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:276
static const char * DEFAULT_PROGRAM_NAME
Definition: TokenStreamRewriteEngine.hpp:81
executeOperation(std ::ostream &s)
Definition: TokenStreamRewriteEngine.hpp:129
Definition: TokenStreamRewriteEngine.hpp:140
void insertBefore(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:247
size_t lastIndex
Definition: TokenStreamRewriteEngine.hpp:175
void insertBefore(RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:240
void originalToStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:348
RefToken getToken(size_t i)
Definition: TokenStreamRewriteEngine.hpp:339
void discard(int ttype)
Definition: TokenStreamRewriteEngine.hpp:335
TokenRefCount< Token > RefToken
Definition: TokenRefCount.hpp:92
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:119
void deleteProgram(const std ::string &programName)
Definition: TokenStreamRewriteEngine.hpp:211
std ::map< std ::string, operation_list > program_map
map program name to <program counter,program> tuple
Definition: TokenStreamRewriteEngine.hpp:138
void insertAfter(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:221
Definition: TokenStream.hpp:22
Definition: BitSet.hpp:40
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:184
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:153
void rollback(size_t instructionIndex)
Definition: TokenStreamRewriteEngine.hpp:195
virtual ~ReplaceOp()
Definition: TokenStreamRewriteEngine.hpp:166
void replace(const std ::string &programName, RefTokenWithIndex from, RefTokenWithIndex to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:296
virtual size_t execute(std ::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:167
void toStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:355
void insertBefore(const std ::string &programName, RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:251
void insertBefore(const std ::string &programName, size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:258
size_t getTokenStreamSize() const
Definition: TokenStreamRewriteEngine.hpp:344
size_t index
Definition: TokenStreamRewriteEngine.hpp:420
Definition: TokenStreamRewriteEngine.hpp:158
token_list tokens
Definition: TokenStreamRewriteEngine.hpp:423
#define ANTLR_USE_NAMESPACE(_x_)
Definition: config.hpp:18
void toStream(std ::ostream &out, const std ::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:359
std ::ostream & out
Definition: TokenStreamRewriteEngine.hpp:128
BitSet discardMask
Definition: TokenStreamRewriteEngine.hpp:432
tokenToStream(std ::ostream &o)
Definition: TokenStreamRewriteEngine.hpp:93
void toStream(std ::ostream &out, size_t start, size_t end) const
Definition: TokenStreamRewriteEngine.hpp:365
virtual size_t getIndex() const
Definition: TokenStreamRewriteEngine.hpp:116
void replace(const std ::string &programName, size_t from, size_t to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:289
virtual size_t execute(std ::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:148
Definition: TokenStreamRewriteEngine.hpp:92
DeleteOp(size_t from, size_t to)
Definition: TokenStreamRewriteEngine.hpp:180
virtual ~RewriteOperation()
Definition: TokenStreamRewriteEngine.hpp:107
RewriteOperation(size_t idx, const std ::string &txt)
Definition: TokenStreamRewriteEngine.hpp:102
program_map programs
Definition: TokenStreamRewriteEngine.hpp:429
size_t getLastRewriteTokenIndex() const
Definition: TokenStreamRewriteEngine.hpp:382
std ::vector< antlr::RefTokenWithIndex > token_list
Definition: TokenStreamRewriteEngine.hpp:80