141 lines
4.8 KiB
Java
Executable File
141 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 java.util.Vector;
|
|
|
|
import de.dhbwstuttgart.bytecode.ClassFile;
|
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
|
import de.dhbwstuttgart.parser.JavaParser;
|
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
|
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 Vector<TypeinferenceResultSet> typeReconstruction()
|
|
throws NullPointerException, TypeinferenceException;
|
|
// ino.end
|
|
|
|
// ino.method.codeGeneration.21346.decldescription type=javadoc
|
|
/**
|
|
* Author: Jörg Bäuerle<br/>
|
|
* Generiert den Bytecode und das Class-File für den Syntaxbaum.
|
|
* @param syntaxTree Der Syntaxbaum
|
|
* @throws NullPointerException Wenn noch kein abstrakter Syntaxbaum vorhanden
|
|
* ist. @throws JVMCodeException
|
|
*/
|
|
// ino.end
|
|
// ino.method.codeGeneration.21346.declaration
|
|
public Vector<ClassFile> codeGeneration(ResultSet result)
|
|
throws NullPointerException, JVMCodeException;
|
|
// 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
|
|
*/
|
|
public void parse(Vector<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;
|
|
|
|
}
|
|
// ino.end
|