1 #ifndef INC_TokenStreamRewriteEngine_hpp__
2 #define INC_TokenStreamRewriteEngine_hpp__
25 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
81 static const
char* DEFAULT_PROGRAM_NAME;
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";
130 void operator () ( RewriteOperation* t ) {
144 : RewriteOperation(index, text)
153 virtual const char*
type()
const {
154 return "InsertBeforeOp";
162 : RewriteOperation(from,text)
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() )
396 const operation_list& prog = rewrites->second;
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
void deleteProgram(const std::string &programName)
Definition: TokenStreamRewriteEngine.hpp:211
Definition: ANTLRException.hpp:15
Definition: TokenRefCount.hpp:43
void toDebugStream(std::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:375
Definition: TokenStreamRewriteEngine.hpp:127
Definition: TokenStreamRewriteEngine.hpp:100
void deleteProgram()
Definition: TokenStreamRewriteEngine.hpp:206
static const size_t MIN_TOKEN_INDEX
Definition: TokenStreamRewriteEngine.hpp:83
void insertBefore(const std::string &programName, size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:258
static const int PROGRAM_INIT_SIZE
Definition: TokenStreamRewriteEngine.hpp:84
void addToSortedRewriteList(RewriteOperation *op)
Definition: TokenStreamRewriteEngine.hpp:409
size_t getLastRewriteTokenIndex() const
Definition: TokenStreamRewriteEngine.hpp:382
virtual size_t execute(std::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:167
void insertBefore(RefTokenWithIndex t, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:240
void replace(size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:265
void insertAfter(const std::string &programName, size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:232
ReplaceOp(size_t from, size_t to, std::string text)
Definition: TokenStreamRewriteEngine.hpp:161
size_t index
Definition: TokenStreamRewriteEngine.hpp:123
Definition: TokenStreamRewriteEngine.hpp:178
InsertBeforeOp(size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:143
std::list< RewriteOperation * > operation_list
list of rewrite operations
Definition: TokenStreamRewriteEngine.hpp:136
void insertBefore(size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:247
TokenStream & stream
Definition: TokenStreamRewriteEngine.hpp:418
void replace(RefTokenWithIndex from, RefTokenWithIndex to, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:282
Definition: TokenStreamRewriteEngine.hpp:77
virtual ~InsertBeforeOp()
Definition: TokenStreamRewriteEngine.hpp:147
void originalToStream(std::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:348
size_t getTokenStreamSize() const
Definition: TokenStreamRewriteEngine.hpp:344
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:153
Definition: TokenStreamRewriteEngine.hpp:140
void insertBefore(const std::string &programName, RefTokenWithIndex t, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:251
size_t lastIndex
Definition: TokenStreamRewriteEngine.hpp:175
void insertAfter(size_t index, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:221
RefToken getToken(size_t i)
Definition: TokenStreamRewriteEngine.hpp:339
void discard(int ttype)
Definition: TokenStreamRewriteEngine.hpp:335
TokenRefCount< Token > RefToken
Definition: TokenRefCount.hpp:92
tokenToStream(std::ostream &o)
Definition: TokenStreamRewriteEngine.hpp:93
void replace(const std::string &programName, RefTokenWithIndex from, RefTokenWithIndex to, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:296
std::map< std::string, operation_list > program_map
map program name to
tuple Definition: TokenStreamRewriteEngine.hpp:138
void toStream(std::ostream &out) const
Definition: TokenStreamRewriteEngine.hpp:355
virtual size_t execute(std::ostream &)
Definition: TokenStreamRewriteEngine.hpp:113
Definition: TokenStream.hpp:22
Definition: BitSet.hpp:40
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:184
void rollback(size_t instructionIndex)
Definition: TokenStreamRewriteEngine.hpp:195
void toStream(std::ostream &out, size_t start, size_t end) const
Definition: TokenStreamRewriteEngine.hpp:365
virtual ~ReplaceOp()
Definition: TokenStreamRewriteEngine.hpp:166
void toStream(std::ostream &out, const std::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:359
virtual size_t execute(std::ostream &out)
Definition: TokenStreamRewriteEngine.hpp:148
void insertAfter(const std::string &programName, RefTokenWithIndex t, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:225
RewriteOperation(size_t idx, const std::string &txt)
Definition: TokenStreamRewriteEngine.hpp:102
size_t index
Definition: TokenStreamRewriteEngine.hpp:420
Definition: TokenStreamRewriteEngine.hpp:158
token_list tokens
Definition: TokenStreamRewriteEngine.hpp:423
void replace(RefTokenWithIndex indexT, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:276
#define ANTLR_USE_NAMESPACE(_x_)
Definition: config.hpp:18
void replace(size_t from, size_t to, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:270
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:119
BitSet discardMask
Definition: TokenStreamRewriteEngine.hpp:432
void insertAfter(RefTokenWithIndex t, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:215
Definition: TokenStreamRewriteEngine.hpp:92
void replace(const std::string &programName, size_t from, size_t to, const std::string &text)
Definition: TokenStreamRewriteEngine.hpp:289
DeleteOp(size_t from, size_t to)
Definition: TokenStreamRewriteEngine.hpp:180
virtual size_t getIndex() const
Definition: TokenStreamRewriteEngine.hpp:116
virtual ~RewriteOperation()
Definition: TokenStreamRewriteEngine.hpp:107
size_t getLastRewriteTokenIndex(const std::string &programName) const
Definition: TokenStreamRewriteEngine.hpp:390
program_map programs
Definition: TokenStreamRewriteEngine.hpp:429
virtual const char * type() const
Definition: TokenStreamRewriteEngine.hpp:171
std::vector< antlr::RefTokenWithIndex > token_list
Definition: TokenStreamRewriteEngine.hpp:80