package org.sugarj; import java.io.IOException; import java.util.List; import org.spoofax.interpreter.terms.IStrategoTerm; import org.sugarj.common.Environment; import org.sugarj.common.errors.SourceCodeException; import org.sugarj.common.path.Path; import org.sugarj.common.path.RelativePath; /** * @author seba */ public interface IBaseProcessor { public abstract AbstractBaseLanguage getLanguage(); public abstract void init(RelativePath sourceFile, Environment environment); public abstract void processModuleImport(IStrategoTerm toplevelDecl) throws IOException; public abstract List<String> processBaseDecl(IStrategoTerm toplevelDecl) throws IOException; public abstract String getNamespace(); public abstract String getModulePathOfImport(IStrategoTerm decl); public abstract boolean isModuleExternallyResolvable(String relModulePath); public abstract String getExtensionName(IStrategoTerm decl) throws IOException; public abstract IStrategoTerm getExtensionBody(IStrategoTerm decl); public abstract String getGeneratedSource(); public abstract Path getGeneratedSourceFile(); public abstract List<Path> compile(List<Path> generatedSourceFiles, Path targetDir, List<Path> classpath) throws IOException, SourceCodeException; }