JavaPatternMatching/src/de/dhbwstuttgart/core/MyCompilerAPI.java

134 lines
4.8 KiB
Java
Executable File

// ino.module.MyCompilerAPI.8570.package
package de.dhbwstuttgart.core;
// ino.end
// ino.module.MyCompilerAPI.8570.import
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
import de.dhbwstuttgart.myexception.JVMCodeException;
import de.dhbwstuttgart.parser.JavaParser;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import de.dhbwstuttgart.typeinference.ByteCodeResult;
import de.dhbwstuttgart.typeinference.ResultSet;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.TypeinferenceResults;
import de.dhbwstuttgart.typeinference.exceptions.ParserError;
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
// ino.class.MyCompilerAPI.21328.description type=javadoc
/**
* Schnittstellen-Klasse zum Compiler. Diese Klasse soll der
* IDE als Compiler-API zum Kompilieren einer Quellcode-Datei
* dienen und stellt somit die Schnittstelle zur Studienarbeit
* von Markus Melzer (Eclipse-Plugin) dar.
* @author Jörg Bäuerle
* @version $Date: 2013/09/09 11:04:24 $
*/
// ino.end
// ino.class.MyCompilerAPI.21328.declaration
public interface MyCompilerAPI
// ino.end
// ino.class.MyCompilerAPI.21328.body
{
// ino.method.init.21331.decldescription type=javadoc
/**
* Author: Jörg Bäuerle<br/>
* Initialisiert den Compiler
*/
// ino.end
// ino.method.init.21331.declaration
public void init();
// ino.end
// ino.method.parse.21334.decldescription type=javadoc
/**
* Author: Jörg Bäuerle<br/>
* Parst eine Quellcodedatei und baut den abstrakten Syntaxbaum auf.
* @param file Die Quellcode-Datei
* @throws FileNotFoundException Wenn die Quellcode-Datei nicht existiert.
* @throws IOException Wenn was schief läuft.
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
*/
// ino.end
// ino.method.parse.21334.declaration
public SourceFile parse(File file)
throws FileNotFoundException, IOException, JavaParser.yyException;
// ino.end
// ino.method.parse.21337.decldescription type=javadoc
/**
* Author: Jörg Bäuerle<br/>
* Parst einen String und baut den abstrakten Syntaxbaum auf.
* @param srcCode Der zu parsende Quellcode
* @throws IOException Wenn was schief läuft.
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
// ino.end
// ino.method.parse.21337.declaration
public void parse(String srcCode)
throws IOException, JavaParser.yyException;
// ino.end
*/
// ino.method.typeReconstruction.21340.decldescription type=javadoc
/**
* Author: Jörg Bäuerle<br/>
* Ruft den Typrekonstruktionsalgorithmus auf.
* @return Die Menge aller möglichen Typkombinationen
* @throws NullPointerException Wenn noch kein abstrakter Syntaxbaum vorhanden
* ist. @throws CTypeReconstructionException Wenn ein Fehler bei der
* Typrekonstruktion auftritt.
*/
// ino.end
// ino.method.typeReconstruction.21340.declaration
public Menge<TypeinferenceResultSet> typeReconstruction(Menge<SourceFile> m_AbstractSyntaxTree) throws NullPointerException, CTypeReconstructionException;
// ino.end
// ino.method.setOutputDir.21349.decldescription type=javadoc
/**
* Author: Juergen Schmiing <br>
* Legt das Ausgabeverzeichnis fuer die class-Files fest.
*/
// ino.end
// ino.method.setOutputDir.21349.declaration
public void setOutputDir(String dir);
// ino.end
// ino.method.getOutputDir.21352.decldescription type=javadoc
/**
* Author: Juergen Schmiing <br>
* Gibt das Ausgabeverzeichnis fuer die class-Files zurueck.
*/
// ino.end
// ino.method.getOutputDir.21352.declaration
public String getOutputDir();
// ino.end
/**
* Parst zusammenhängende JavaKlassen in verschiedenen Dateien.
* @param filenames - Eine Liste von Quellcodedateien, welche gseparst werden sollen
* @return
*/
public Menge<SourceFile> parse(Menge<String> filenames) throws ParserError;
/**
* Parst den SourceCode einer Datei.
* @param sourceCode - SourceCode einer Java-Quellcodedatei
* @return den aus dem sourceCode generierten Syntaxbaum
*/
public SourceFile parse(String sourceCode) throws ParserError;
/**
* Generiert für jede geparste Klasse im SourceFile ein ByteCodeResult.
* Dafür müssen die Schritte Parsen und typeReconstruction ausgeführt werden.
* @return
*/
public Menge<ByteCodeResult> generateBytecode(Menge<SourceFile> m_AbstractSyntaxTree, TypeinferenceResults typeinferenceResults);
}
// ino.end