package org.sugarj.driver.declprovider; import java.io.IOException; import java.text.ParseException; import org.spoofax.interpreter.terms.IStrategoTerm; import org.spoofax.jsglr.client.InvalidParseTableException; import org.spoofax.jsglr.client.imploder.IToken; import org.spoofax.jsglr.shared.SGLRException; /** * @author jp * @author seba */ public interface ToplevelDeclarationProvider { /** * * @param recovery use recovery parser if possible * @param lookahead if true, this is a lookahead parse that should not annotate errors. * @return the AST of the next toplevel declaration */ public IStrategoTerm getNextToplevelDecl(boolean recovery, boolean lookahead) throws IOException, ParseException, InvalidParseTableException, SGLRException; public void retract(IStrategoTerm term); public boolean hasNextToplevelDecl(); public int getSourceHashCode(); public IToken getStartToken(); }