You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
900 B
45 lines
900 B
/* ANTLR Translator Generator
|
|
* Project led by Terence Parr at http://www.jGuru.com
|
|
* Software rights: http://www.antlr.org/license.html
|
|
*
|
|
* $Id$
|
|
*/
|
|
#include "antlr/TokenStreamBasicFilter.h"
|
|
|
|
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
|
|
namespace antlr {
|
|
#endif
|
|
|
|
/** This object is a TokenStream that passes through all
|
|
* tokens except for those that you tell it to discard.
|
|
* There is no buffering of the tokens.
|
|
*/
|
|
TokenStreamBasicFilter::TokenStreamBasicFilter(TokenStream& input_)
|
|
: input(&input_)
|
|
{
|
|
}
|
|
|
|
void TokenStreamBasicFilter::discard(int ttype)
|
|
{
|
|
discardMask.add(ttype);
|
|
}
|
|
|
|
void TokenStreamBasicFilter::discard(const BitSet& mask)
|
|
{
|
|
discardMask = mask;
|
|
}
|
|
|
|
RefToken TokenStreamBasicFilter::nextToken()
|
|
{
|
|
RefToken tok = input->nextToken();
|
|
while ( tok && discardMask.member(tok->getType()) ) {
|
|
tok = input->nextToken();
|
|
}
|
|
return tok;
|
|
}
|
|
|
|
#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
|
|
}
|
|
#endif
|
|
|