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));
308 remove(DEFAULT_PROGRAM_NAME, index, index);
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);
435#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
TokenRefCount< Token > RefToken
Definition: TokenRefCount.hpp:92
Definition: BitSet.hpp:40
Definition: TokenStreamRewriteEngine.hpp:178
DeleteOp(size_t from, size_t to)
Definition: TokenStreamRewriteEngine.hpp:180
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:184
Definition: TokenStreamRewriteEngine.hpp:141
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:153
virtual ~InsertBeforeOp()
Definition: TokenStreamRewriteEngine.hpp:147
virtual size_t execute(std ::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:148
InsertBeforeOp(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:143
Definition: TokenStreamRewriteEngine.hpp:159
virtual ~ReplaceOp()
Definition: TokenStreamRewriteEngine.hpp:166
ReplaceOp(size_t from, size_t to, std ::string text)
Definition: TokenStreamRewriteEngine.hpp:161
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:171
size_t lastIndex
Definition: TokenStreamRewriteEngine.hpp:175
virtual size_t execute(std ::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:167
Definition: TokenStreamRewriteEngine.hpp:100
virtual size_t getIndex() const
Definition: TokenStreamRewriteEngine.hpp:116
virtual size_t execute(std ::ostream &)
Definition: TokenStreamRewriteEngine.hpp:113
std::string text
Definition: TokenStreamRewriteEngine.hpp:124
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:119
virtual ~RewriteOperation()
Definition: TokenStreamRewriteEngine.hpp:107
RewriteOperation(size_t idx, const std ::string &txt)
Definition: TokenStreamRewriteEngine.hpp:102
size_t index
Definition: TokenStreamRewriteEngine.hpp:123
Definition: TokenStreamRewriteEngine.hpp:78
RefToken getToken(size_t i)
Definition: TokenStreamRewriteEngine.hpp:339
void replace(size_t from, size_t to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:270
void rollback(const std ::string &programName, size_t instructionIndex)
void insertBefore(const std ::string &programName, size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:258
static const char * DEFAULT_PROGRAM_NAME
Definition: TokenStreamRewriteEngine.hpp:81
std ::vector< antlr::RefTokenWithIndex > token_list
Definition: TokenStreamRewriteEngine.hpp:80
void replace(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:265
void remove(size_t from, size_t to)
Definition: TokenStreamRewriteEngine.hpp:311
program_map programs
Definition: TokenStreamRewriteEngine.hpp:429
void addToSortedRewriteList(RewriteOperation *op)
Definition: TokenStreamRewriteEngine.hpp:409
BitSet discardMask
Definition: TokenStreamRewriteEngine.hpp:432
static const size_t MIN_TOKEN_INDEX
Definition: TokenStreamRewriteEngine.hpp:83
void insertAfter(RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:215
void discard(int ttype)
Definition: TokenStreamRewriteEngine.hpp:335
size_t getTokenStreamSize() const
Definition: TokenStreamRewriteEngine.hpp:344
void replace(RefTokenWithIndex indexT, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:276
void originalToStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:348
token_list tokens
Definition: TokenStreamRewriteEngine.hpp:423
std ::map< std ::string, operation_list > program_map
map program name to <program counter,program> tuple
Definition: TokenStreamRewriteEngine.hpp:138
void addToSortedRewriteList(const std ::string &programName, RewriteOperation *op)
TokenStream & stream
Definition: TokenStreamRewriteEngine.hpp:418
static const int PROGRAM_INIT_SIZE
Definition: TokenStreamRewriteEngine.hpp:84
void rollback(size_t instructionIndex)
Definition: TokenStreamRewriteEngine.hpp:195
void remove(const std ::string &programName, RefTokenWithIndex from, RefTokenWithIndex to)
Definition: TokenStreamRewriteEngine.hpp:329
void insertAfter(const std ::string &programName, size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:232
void remove(RefTokenWithIndex indexT)
Definition: TokenStreamRewriteEngine.hpp:315
void replace(const std ::string &programName, RefTokenWithIndex from, RefTokenWithIndex to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:296
void insertBefore(const std ::string &programName, RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:251
void toStream(std ::ostream &out, const std ::string &programName, size_t firstToken, size_t lastToken) const
void insertBefore(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:247
void insertAfter(size_t index, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:221
void toStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:355
void replace(RefTokenWithIndex from, RefTokenWithIndex to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:282
void deleteProgram()
Definition: TokenStreamRewriteEngine.hpp:206
void toDebugStream(std ::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:375
size_t index
Definition: TokenStreamRewriteEngine.hpp:420
void insertAfter(const std ::string &programName, RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:225
void insertBefore(RefTokenWithIndex t, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:240
void remove(RefTokenWithIndex from, RefTokenWithIndex to)
Definition: TokenStreamRewriteEngine.hpp:319
void remove(size_t index)
Definition: TokenStreamRewriteEngine.hpp:307
void replace(const std ::string &programName, size_t from, size_t to, const std ::string &text)
Definition: TokenStreamRewriteEngine.hpp:289
void originalToStream(std ::ostream &out, size_t start, size_t end) const
size_t getLastRewriteTokenIndex() const
Definition: TokenStreamRewriteEngine.hpp:382
void toStream(std ::ostream &out, const std ::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:359
void toDebugStream(std ::ostream &out, size_t start, size_t end) const
std ::list< RewriteOperation * > operation_list
list of rewrite operations
Definition: TokenStreamRewriteEngine.hpp:136
void toStream(std ::ostream &out, size_t start, size_t end) const
Definition: TokenStreamRewriteEngine.hpp:365
size_t getLastRewriteTokenIndex(const std ::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:390
void deleteProgram(const std ::string &programName)
Definition: TokenStreamRewriteEngine.hpp:211
void remove(const std ::string &programName, size_t from, size_t to)
Definition: TokenStreamRewriteEngine.hpp:323
Definition: TokenStream.hpp:22
#define ANTLR_USE_NAMESPACE(_x_)
Definition: config.hpp:18
Definition: ANTLRException.hpp:15
Definition: TokenStreamRewriteEngine.hpp:127
std::ostream & out
Definition: TokenStreamRewriteEngine.hpp:128
executeOperation(std ::ostream &s)
Definition: TokenStreamRewriteEngine.hpp:129
Definition: TokenStreamRewriteEngine.hpp:92
std::ostream & out
Definition: TokenStreamRewriteEngine.hpp:97
tokenToStream(std ::ostream &o)
Definition: TokenStreamRewriteEngine.hpp:93