package java_cup.runtime;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class ScannerBuffer implements Scanner {
private Scanner inner;
private List<Symbol> buffer = new LinkedList<Symbol>();
/**
* Wraps around a custom scanner and stores all so far produced tokens in a buffer
* @param inner the scanner to buffer
*/
public ScannerBuffer(Scanner inner){
this.inner=inner;
}
/**
* Read-Only access to the buffered Symbols
* @return an unmodifiable Version of the buffer
*/
public List<Symbol> getBuffered() {
return Collections.unmodifiableList(buffer);
}
@Override
public Symbol next_token() throws Exception {
Symbol buffered = inner.next_token();
buffer.add(buffered);
return buffered;
}
}