/******************************************************************************* * Copyright (c) 2008 Scott Stanchfield. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Based on the ANTLR parser generator by Terence Parr, http://antlr.org * Ric Klaren <klaren@cs.utwente.nl> * Scott Stanchfield - Modifications for XML Parsing *******************************************************************************/ package com.javadude.antxr; import com.javadude.antxr.collections.impl.BitSet; /** 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. */ public class TokenStreamBasicFilter implements TokenStream { /** The set of token types to discard */ protected BitSet discardMask; /** The input stream */ protected TokenStream input; public TokenStreamBasicFilter(TokenStream input) { this.input = input; discardMask = new BitSet(); } public void discard(int ttype) { discardMask.add(ttype); } public void discard(BitSet mask) { discardMask = mask; } public Token nextToken() throws TokenStreamException { Token tok = input.nextToken(); while (tok != null && discardMask.member(tok.getType())) { tok = input.nextToken(); } return tok; } }