de.dhbwstuttgart.core

## Class MyCompiler

- java.lang.Object
- - de.dhbwstuttgart.core.MyCompiler

All Implemented Interfaces:
  MyCompilerAPI

    public class MyCompiler
    extends java.lang.Object
    implements MyCompilerAPI

### Field Summary

Fields
`protected static Logger` `inferencelog`
`private Menge<SourceFile>` `m_AbstractSyntaxTree` Der abstrake Syntaxbaum Autor: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
`static int` `NO_LINENUMBER`
`protected java.lang.String` `OutputDir`
`Menge<Pair>` `testPair`

### Constructor Summary

Constructors
`private` `MyCompiler()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle Der private Konstruktor.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static MyCompilerAPI` `getAPI(LoggerConfiguration loggerConfig)` Author: JÃ¶rg BÃ¤uerle Stellt eine neue Instanz der CompilerAPI zur VerfÃ¯Â¿Â½gung.
`java.lang.String` `getOutputDir()` Author: Juergen Schmiing Gibt das Ausgabeverzeichnis fuer die class-Files zurueck.
`void` `init()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle Initialisiert den Compiler
`static void` `main(java.lang.String[] args)` Die Main-Funktion, Ã¯Â¿Â½ber die der Compiler auch per Konsole gestartet werden kann.
`private TypeAssumptions` `makeFunNAssumptions()` Erstellt die FunN-Assumptions Fun0-FunN (momentan fÃ¼r N = 6)
`static Type` `makeGenericTypeVars2TypePlaceHolders(Type T)`
`private void` `parse_backup(java.io.Reader reader)` Parst den Quellcode und baut den abstrakten Syntaxbaum auf.
`SourceFile` `parse(java.io.File file)` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle Ruft die Parse-Methode.
`void` `parse(Menge<java.lang.String> filenames)` Diese Funktion nimmt einen Menge von Dateinamen.
`SourceFile` `parse(java.lang.String sourceCode)` Parst den SourceCode einer Datei.
`private SourceFile` `parse2SyntaxTree(java.io.Reader fileContent)` Parst den Inhalt einer Datei zu einem Syntaxbaum.
`void` `setOutputDir(java.lang.String dir)` Author: Juergen Schmiing Legt das Ausgabeverzeichnis fuer die class-Files fest.
`Menge<TypeinferenceResultSet>` `typeReconstruction()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle Ruft den Typrekonstruktionsalgorithmus auf.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### NO_LINENUMBER

    public static final int NO_LINENUMBER

See Also:
  Constant Field Values

#### inferencelog

    protected static Logger inferencelog

#### OutputDir

    protected java.lang.String OutputDir

#### m_AbstractSyntaxTree

    private Menge<SourceFile> m_AbstractSyntaxTree

Der abstrake Syntaxbaum
Autor: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle

#### testPair

    public Menge<Pair> testPair

### Constructor Detail

#### MyCompiler

    private MyCompiler()

Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
Der private Konstruktor. Es soll von auÃ¯Â¿Â½en kein Compiler angelegt werden kÃ¯Â¿Â½nnen, sondern nur eine API zur VerfÃ¯Â¿Â½gung gestellt werden.

Parameters:
  `logger` - Konfiguration fÃ¼r Debug Ausgabe TODO

### Method Detail

#### getAPI

    public static MyCompilerAPI getAPI(LoggerConfiguration loggerConfig)

Author: JÃ¶rg BÃ¤uerle
Stellt eine neue Instanz der CompilerAPI zur VerfÃ¯Â¿Â½gung. Diese Methode sollte von der IDE aus aufgerufen werden, um eine Quellcode-Datei zu kompilieren.

Returns:
  Die Compiler-API

#### parse_backup

    private void parse_backup(java.io.Reader reader)
                       throws java.io.IOException,
                              JavaParser.yyException

Parst den Quellcode und baut den abstrakten Syntaxbaum auf. Danach wird automatisch der von Thomas Ott implementierte Algorithmus `NewTVar(jclass)` (siehe Algorithmus 5.17 TRProg, Martin PlÃ¯Â¿Â½micke) aufgerufen.
Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle

Parameters:
  `reader` -
Throws:
  `java.io.IOException`
  `JavaParser.yyException`

#### init

    public void init()

Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
Initialisiert den Compiler

Specified by:
  `init` in interface `MyCompilerAPI`

#### parse

    public SourceFile parse(java.io.File file)
                     throws java.io.FileNotFoundException,
                            java.io.IOException,
                            JavaParser.yyException

Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
Ruft die Parse-Methode.

Specified by:
  `parse` in interface `MyCompilerAPI`
Parameters:
  `file` - Die Quellcode-Datei
Throws:
  `java.io.FileNotFoundException` - Wenn die Quellcode-Datei nicht existiert.
  `java.io.IOException` - Wenn was schief lÃ¯Â¿Â½uft.
  `JavaParser.yyException` - Wenn ein Fehler beim Parsen auftritt.

#### typeReconstruction

    public Menge<TypeinferenceResultSet> typeReconstruction()
                                                     throws java.lang.NullPointerException,
                                                            CTypeReconstructionException

Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle
Ruft den Typrekonstruktionsalgorithmus auf.

Specified by:
  `typeReconstruction` in interface `MyCompilerAPI`
Returns:
  Die Menge aller mÃ¯Â¿Â½glichen Typkombinationen
Throws:
  `java.lang.NullPointerException` - Wenn noch kein abstrakter Syntaxbaum vorhanden ist. @throws CTypeReconstructionException Wenn ein Fehler bei der Typrekonstruktion auftritt.
  `CTypeReconstructionException`

#### makeFunNAssumptions

    private TypeAssumptions makeFunNAssumptions()

Erstellt die FunN-Assumptions Fun0-FunN (momentan fÃ¼r N = 6)

Returns:

#### main

    public static void main(java.lang.String[] args)

Die Main-Funktion, Ã¯Â¿Â½ber die der Compiler auch per Konsole gestartet werden kann.

Parameters:
  `args` - Klassendatei

#### setOutputDir

    public void setOutputDir(java.lang.String dir)

Description copied from interface: `MyCompilerAPI`
Author: Juergen Schmiing
Legt das Ausgabeverzeichnis fuer die class-Files fest.

Specified by:
  `setOutputDir` in interface `MyCompilerAPI`

#### getOutputDir

    public java.lang.String getOutputDir()

Description copied from interface: `MyCompilerAPI`
Author: Juergen Schmiing
Gibt das Ausgabeverzeichnis fuer die class-Files zurueck.

Specified by:
  `getOutputDir` in interface `MyCompilerAPI`

#### makeGenericTypeVars2TypePlaceHolders

    public static Type makeGenericTypeVars2TypePlaceHolders(Type T)

Parameters:
  `T` - - Typ, bei welchem die GTVs ersetzt werden sollen.

#### parse2SyntaxTree

    private SourceFile parse2SyntaxTree(java.io.Reader fileContent)
                                 throws ParserError

Parst den Inhalt einer Datei zu einem Syntaxbaum.

Throws:
  `ParserError`

#### parse

    public void parse(Menge<java.lang.String> filenames)
               throws ParserError

Diese Funktion nimmt einen Menge von Dateinamen. Alle diese Dateien werden zu einem SyntaxBaum geparst.

Specified by:
  `parse` in interface `MyCompilerAPI`
Parameters:
  `filenames` - - Eine Liste von Quellcodedateien, welche gseparst werden sollen
Throws:
  `ParserError`

#### parse

    public SourceFile parse(java.lang.String sourceCode)

Description copied from interface: `MyCompilerAPI`
Parst den SourceCode einer Datei.

Specified by:
  `parse` in interface `MyCompilerAPI`
Parameters:
  `sourceCode` - - SourceCode einer Java-Quellcodedatei
Returns:
  den aus dem sourceCode generierten Syntaxbaum