2013-10-18 13:33:46 +02:00
|
|
|
|
// ino.module.MyCompilerAPI.8570.package
|
2014-09-02 10:33:54 +02:00
|
|
|
|
package de.dhbwstuttgart.core;
|
2013-10-18 13:33:46 +02:00
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
|
|
// ino.module.MyCompilerAPI.8570.import
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.util.Vector;
|
2014-03-12 16:32:50 +01:00
|
|
|
|
|
2014-09-02 10:33:54 +02:00
|
|
|
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
|
|
|
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
|
|
|
|
import de.dhbwstuttgart.typeinference.exceptions.ParserError;
|
|
|
|
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
|
|
|
|
import de.dhbwstuttgart.typeinference.parser.JavaParser;
|
2014-03-12 16:32:50 +01:00
|
|
|
|
import mycompiler.mybytecode.ClassFile;
|
2013-10-18 13:33:46 +02:00
|
|
|
|
import mycompiler.myexception.CTypeReconstructionException;
|
|
|
|
|
import mycompiler.myexception.JVMCodeException;
|
|
|
|
|
|
|
|
|
|
// 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<EFBFBD>rg B<EFBFBD>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<EFBFBD>rg B<EFBFBD>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<EFBFBD>rg B<EFBFBD>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<EFBFBD>uft.
|
|
|
|
|
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
|
|
|
|
|
*/
|
|
|
|
|
// ino.end
|
|
|
|
|
// ino.method.parse.21334.declaration
|
2014-03-14 16:34:25 +01:00
|
|
|
|
public SourceFile parse(File file)
|
2013-10-18 13:33:46 +02:00
|
|
|
|
throws FileNotFoundException, IOException, JavaParser.yyException;
|
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
|
|
// ino.method.parse.21337.decldescription type=javadoc
|
|
|
|
|
/**
|
|
|
|
|
* Author: J<EFBFBD>rg B<EFBFBD>uerle<br/>
|
|
|
|
|
* Parst einen String und baut den abstrakten Syntaxbaum auf.
|
|
|
|
|
* @param srcCode Der zu parsende Quellcode
|
|
|
|
|
* @throws IOException Wenn was schief l<EFBFBD>uft.
|
|
|
|
|
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
|
2014-02-11 16:30:38 +01:00
|
|
|
|
|
2013-10-18 13:33:46 +02:00
|
|
|
|
// ino.end
|
|
|
|
|
// ino.method.parse.21337.declaration
|
|
|
|
|
public void parse(String srcCode)
|
|
|
|
|
throws IOException, JavaParser.yyException;
|
|
|
|
|
// ino.end
|
2014-02-11 16:30:38 +01:00
|
|
|
|
*/
|
|
|
|
|
|
2013-10-18 13:33:46 +02:00
|
|
|
|
// ino.method.typeReconstruction.21340.decldescription type=javadoc
|
|
|
|
|
/**
|
|
|
|
|
* Author: J<EFBFBD>rg B<EFBFBD>uerle<br/>
|
|
|
|
|
* Ruft den Typrekonstruktionsalgorithmus auf.
|
|
|
|
|
* @return Die Menge aller m<EFBFBD>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
|
2014-02-09 16:07:31 +01:00
|
|
|
|
public Vector<TypeinferenceResultSet> typeReconstruction()
|
2014-04-15 14:56:20 +02:00
|
|
|
|
throws NullPointerException, TypeinferenceException;
|
2013-10-18 13:33:46 +02:00
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
|
|
// ino.method.codeGeneration.21346.decldescription type=javadoc
|
|
|
|
|
/**
|
|
|
|
|
* Author: J<EFBFBD>rg B<EFBFBD>uerle<br/>
|
|
|
|
|
* Generiert den Bytecode und das Class-File f<EFBFBD>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
|
2014-03-12 16:32:50 +01:00
|
|
|
|
public Vector<ClassFile> codeGeneration(ResultSet result)
|
2013-10-18 13:33:46 +02:00
|
|
|
|
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<EFBFBD>ngende JavaKlassen in verschiedenen Dateien.
|
|
|
|
|
* @param filenames - Eine Liste von Quellcodedateien, welche gseparst werden sollen
|
|
|
|
|
*/
|
2014-04-15 14:56:20 +02:00
|
|
|
|
public void parse(Vector<String> filenames) throws ParserError;
|
2013-10-18 13:33:46 +02:00
|
|
|
|
|
2014-03-07 22:05:10 +01:00
|
|
|
|
/**
|
|
|
|
|
* Parst den SourceCode einer Datei.
|
|
|
|
|
* @param sourceCode - SourceCode einer Java-Quellcodedatei
|
2014-03-12 15:27:26 +01:00
|
|
|
|
* @return den aus dem sourceCode generierten Syntaxbaum
|
2014-03-07 22:05:10 +01:00
|
|
|
|
*/
|
2014-04-15 14:56:20 +02:00
|
|
|
|
public SourceFile parse(String sourceCode) throws ParserError;
|
2014-03-07 22:05:10 +01:00
|
|
|
|
|
2013-10-18 13:33:46 +02:00
|
|
|
|
}
|
|
|
|
|
// ino.end
|