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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier | Constructor and Description
    --- | ---
    `private` | `MyCompiler()` Author: JÃ¯Â¿Â½rg BÃ¯Â¿Â½uerle Der private Konstruktor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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