mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-12-28 17:08:03 +00:00
38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
# 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
|