/*
* RestorableTokenSource.java
*
* comments here.
*
* @author Michiaki Tatsubori
* @version %VERSION% %DATE%
* @see java.lang.Object
*
* COPYRIGHT 1998 by Michiaki Tatsubori, ALL RIGHTS RESERVED.
*/
package io.devnulllabs.openjava.syntax;
import io.devnulllabs.openjava.mop.Environment;
import io.devnulllabs.openjava.tools.parser.Token;
/**
* The class RestorableTokenSource
*
* For example *
**
* * @author Michiaki Tatsubori * @version 1.0 * @since $Id: RestorableTokenSource.java,v 1.2 2003/02/19 02:54:31 tatsubori Exp $ * @see java.lang.Object */ public class RestorableTokenSource implements TokenSource { private TokenSource tokenSource; private Environment env; private int pointer = 0; private int offset = 0; public RestorableTokenSource(TokenSource src, Environment env) { this.tokenSource = src; this.env = env; } public RestorableTokenSource(TokenSource src) { this(src, null); } public Environment getEnvironment() { return ((env == null) ? tokenSource.getEnvironment() : env); } public void assume() { offset = pointer; } public void restore() { pointer = offset; } public void fix() { for (int i = offset; i < pointer; ++i) { tokenSource.getNextToken(); } pointer = 0; offset = 0; } public Token getNextToken() { return tokenSource.getToken(++pointer); } public Token getToken(int i) { return tokenSource.getToken(pointer + i); } }