# CompilerNichtHaskell ## Teamrollen - Scanner & Parser: Julian Kraus und Laurenz Schleicher - Semantische Analyse: Juha Ahmad - Code-Generierung: Simon Wittmann - Testen: Jonathan Fleischmann ## Erbrachte Leistungen - Laura Schleicher: Grammatik entwickeln, Records, Statements als Liste zurückgeben, Generator, Syntactic Sugar auflösen - Julian Kraus: Grammatik entwickeln, Generator, Syntactic Sugar auflösen, custom Exceptions im Parser - Ahmad Juha: Typcheck - Simon Wittmann: Codegen und Tool für ASM - Jonathan Fleischmann: - Schreiben von Tests, die die einzelnen Features abdecken - Umwandlung der Testfiles in AST und TypedAST - Implementierung der Tests, die mithilfe der umgewandelten Testfiles die korrekte Umwandlung von java-File zu AST und AST zu TypedAST prüfen - Schreiben von Testfiles, die die einzelnen Features abdecken und gut über Reflections testbar sind - Implementierung eines Tools, durch das die Testfiles mithilfe von Reflections einfacher nach gewissen Kriterien überprüfbar sind - Implementierung von Tests, die die korrekte Umwandlung der Testfiles von java-File in class-File durch den Compiler mithilfe des Tools prüfen - Hinzufügen von Testfiles, die bei der Umwandlung fehlschlagen sollen - Implementierung von Tests, die prüfen, ob der Compiler bei den fehlerhaften Testfiles tatsächlich fehlschlägt [//]: # (TODO: - Dokumentation der Tests) ## Besonderheiten unserer Implementierung - Zugriff auf Felder nur über `this`-Referenz möglich - `print()`statt `System.out.println()` - keine Accessmodifier/alles ist public - logische Statements MÜSSEN geklammert werden, ansonsten wird ununterbrochen von links nach rechts berechnet (so würde z.B. (true || false == false) false zurückgeben) - i++ und i-- sind nicht erlaubt, stattdessen i = i + 1 und i = i - 1 bzw i += 1 und i -= 1