[antlr-interest] finally added UnbufferedTokenStream

Terence Parr PARRT at CS.USFCA.EDU
Mon Nov 2 23:18:48 PST 2009


To build ST v4's insanely complicated lexer, I couldn't get around an  
on-demand (unbuffered) token stream.  Note that I don't have an  
unbuffered char stream yet but given LookaheadStream<T>, it should be  
just as easy.  Code for token stream is tiny; see below.  It seems to  
work so far.

Ter

add //depot/code/antlr/main/runtime/Java/src/main/java/org/antlr/ 
runtime/UnbufferedTokenStream.java#1
edit //depot/code/antlr/main/runtime/Java/src/main/java/org/antlr/ 
runtime/misc/LookaheadStream.java#4
edit //depot/code/antlr/main/tool/CHANGES.txt#18
Change 6294 submitted.

package org.antlr.runtime;

import org.antlr.runtime.misc.LookaheadStream;

import java.util.Map;
import java.util.Set;

public class UnbufferedTokenStream extends LookaheadStream<Token>  
implements TokenStream {
	protected TokenSource tokenSource;
	protected int tokenIndex = 0;

	public UnbufferedTokenStream(TokenSource tokenSource) {
		super(Token.EOF_TOKEN);
		this.tokenSource = tokenSource;
	}

	public Token nextElement() {
		Token t = tokenSource.nextToken();
		t.setTokenIndex(tokenIndex++);
		return t;
	}

	public TokenSource getTokenSource() { return tokenSource; }

	public String toString(int start, int stop) { return "n/a"; }

	public String toString(Token start, Token stop) { return "n/a"; }

	public int LA(int i) { return LT(i).getType(); }

	public String getSourceName() {	return tokenSource.getSourceName();	}
}



More information about the antlr-interest mailing list