2013-10-18 11:33:46 +00:00
|
|
|
// ino.module.MyCompilerAPI.8570.package
|
2014-09-02 08:33:54 +00:00
|
|
|
package de.dhbwstuttgart.core;
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.module.MyCompilerAPI.8570.import
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
|
import java.io.IOException;
|
2014-03-12 15:32:50 +00:00
|
|
|
|
2015-05-27 10:53:47 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.Menge;
|
2014-09-04 14:35:44 +00:00
|
|
|
import de.dhbwstuttgart.myexception.CTypeReconstructionException;
|
|
|
|
import de.dhbwstuttgart.myexception.JVMCodeException;
|
2014-09-05 09:49:31 +00:00
|
|
|
import de.dhbwstuttgart.parser.JavaParser;
|
2014-09-04 14:35:44 +00:00
|
|
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
2015-05-27 10:53:47 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.ByteCodeResult;
|
2014-09-02 08:33:54 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
|
|
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
|
|
|
import de.dhbwstuttgart.typeinference.exceptions.ParserError;
|
|
|
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
2013-10-18 11:33:46 +00:00
|
|
|
|
|
|
|
// 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.
|
2015-05-12 17:49:27 +00:00
|
|
|
* @author Jörg Bäuerle
|
2013-10-18 11:33:46 +00:00
|
|
|
* @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
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Author: Jörg Bäuerle<br/>
|
2013-10-18 11:33:46 +00:00
|
|
|
* Initialisiert den Compiler
|
|
|
|
*/
|
|
|
|
// ino.end
|
|
|
|
// ino.method.init.21331.declaration
|
|
|
|
public void init();
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.parse.21334.decldescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Author: Jörg Bäuerle<br/>
|
2013-10-18 11:33:46 +00:00
|
|
|
* Parst eine Quellcodedatei und baut den abstrakten Syntaxbaum auf.
|
|
|
|
* @param file Die Quellcode-Datei
|
|
|
|
* @throws FileNotFoundException Wenn die Quellcode-Datei nicht existiert.
|
2015-05-12 17:49:27 +00:00
|
|
|
* @throws IOException Wenn was schief läuft.
|
2013-10-18 11:33:46 +00:00
|
|
|
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
|
|
|
|
*/
|
|
|
|
// ino.end
|
|
|
|
// ino.method.parse.21334.declaration
|
2014-03-14 15:34:25 +00:00
|
|
|
public SourceFile parse(File file)
|
2013-10-18 11:33:46 +00:00
|
|
|
throws FileNotFoundException, IOException, JavaParser.yyException;
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.parse.21337.decldescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Author: Jörg Bäuerle<br/>
|
2013-10-18 11:33:46 +00:00
|
|
|
* Parst einen String und baut den abstrakten Syntaxbaum auf.
|
|
|
|
* @param srcCode Der zu parsende Quellcode
|
2015-05-12 17:49:27 +00:00
|
|
|
* @throws IOException Wenn was schief läuft.
|
2013-10-18 11:33:46 +00:00
|
|
|
* @throws JavaParser.yyException Wenn ein Fehler beim Parsen auftritt.
|
2014-02-11 15:30:38 +00:00
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.end
|
|
|
|
// ino.method.parse.21337.declaration
|
|
|
|
public void parse(String srcCode)
|
|
|
|
throws IOException, JavaParser.yyException;
|
|
|
|
// ino.end
|
2014-02-11 15:30:38 +00:00
|
|
|
*/
|
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.method.typeReconstruction.21340.decldescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Author: Jörg Bäuerle<br/>
|
2013-10-18 11:33:46 +00:00
|
|
|
* Ruft den Typrekonstruktionsalgorithmus auf.
|
2015-05-12 17:49:27 +00:00
|
|
|
* @return Die Menge aller möglichen Typkombinationen
|
2013-10-18 11:33:46 +00:00
|
|
|
* @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
|
2015-04-22 19:40:22 +00:00
|
|
|
public Menge<TypeinferenceResultSet> typeReconstruction()
|
2014-04-15 12:56:20 +00:00
|
|
|
throws NullPointerException, TypeinferenceException;
|
2013-10-18 11:33:46 +00:00
|
|
|
// 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
|
|
|
|
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Parst zusammenhängende JavaKlassen in verschiedenen Dateien.
|
2013-10-18 11:33:46 +00:00
|
|
|
* @param filenames - Eine Liste von Quellcodedateien, welche gseparst werden sollen
|
|
|
|
*/
|
2015-04-22 19:40:22 +00:00
|
|
|
public void parse(Menge<String> filenames) throws ParserError;
|
2013-10-18 11:33:46 +00:00
|
|
|
|
2014-03-07 21:05:10 +00:00
|
|
|
/**
|
|
|
|
* Parst den SourceCode einer Datei.
|
|
|
|
* @param sourceCode - SourceCode einer Java-Quellcodedatei
|
2014-03-12 14:27:26 +00:00
|
|
|
* @return den aus dem sourceCode generierten Syntaxbaum
|
2014-03-07 21:05:10 +00:00
|
|
|
*/
|
2014-04-15 12:56:20 +00:00
|
|
|
public SourceFile parse(String sourceCode) throws ParserError;
|
2014-03-07 21:05:10 +00:00
|
|
|
|
2015-08-27 11:36:14 +00:00
|
|
|
/**
|
|
|
|
* 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();
|
2013-10-18 11:33:46 +00:00
|
|
|
}
|
|
|
|
// ino.end
|