mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-12-27 09:08:04 +00:00
Compilerbau 2024
Gruppe : absolut nicht Haskell - Simon Wittmann, Laurenz Schleicher, Julian Kraus, Ahmad Juha, Jonathan Fleischmann
output | ||
presentation | ||
src | ||
.gitignore | ||
pom.xml | ||
README.md |
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
- 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
Fehlende Tests für Features (positive Tests)
- Main-Methode
- Klammern von Expressions
Besonderheiten unserer Implementierung
- Zugriff auf Felder nur über
this
-Referenz möglich print()
stattSystem.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