[antlr-interest] ignoring lexer rules

Sinan sinan.karasu at boeing.com
Wed Mar 6 09:51:50 PST 2002


Ed Sinjiashvili wrote:
> 
> Hi,
> 
> I've tried to ask Terence about this issue and he pointed me to this
> ML. So here I am. Suppose I have the following grammar(that describes
> literal strings with escaped octal numbers inside):

I would do something like:

import antlr.*;


public class MyTokenStreamSelector extends TokenStreamSelector {
	/** The set of token types to discard */

	public MyTokenStreamSelector() {
		super();
	}

	public Token nextToken() throws TokenStreamException {
		for(;;;){
			try {
				Token tok = super.nextToken();

				if(tok.getType()==MyParser.STRING){
					//code to replace the octal stuff maybe regular expressions.
				...........
				}

				//System.out.println("returning:"+tok.getType()+":"+tok);
				return tok;
			}
			catch (TokenStreamRetryException r) {
				// just retry "forever"
			}
		}
	}
}

------------------------
And then in your MyParser.g



	private MyTokenStreamSelector filter=null;
	
	public MyParser(MyTokenStreamSelector lexer) {
  		this((TokenStream)lexer);
		filter=lexer;
	}


------------------
and where you instantiate Parser/Lexer etc....


 public static MyTokenStreamSelector selector = new
MyTokenStreamSelector();


// notify selector about starting lexer; name for convenience
		selector.addInputStream(myMainLexer, "main");
		selector.select("main"); // start with main P lexer

		// Create a parser that reads from the scanner
		myParser = new MyParser(selector);

 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list