Compilerbau2024AbsolutNicht.../README.md

38 lines
1.8 KiB
Markdown
Raw Normal View History

2024-04-24 12:08:32 +00:00
# CompilerNichtHaskell
2024-04-24 12:35:09 +00:00
2024-06-25 15:26:56 +00:00
## Teamrollen
2024-04-24 12:35:09 +00:00
- Scanner & Parser: Julian Kraus und Laurenz Schleicher
- Semantische Analyse: Juha Ahmad
- Code-Generierung: Simon Wittmann
- Testen: Jonathan Fleischmann
2024-06-22 15:20:18 +00:00
2024-06-25 15:47:40 +00:00
## Erbrachte Leistungen
- Laura Schleicher: Grammatik entwickeln, Records, Statements als Liste zurückgeben, Generator, Syntactic Sugar auflösen
2024-06-23 16:35:57 +00:00
- Julian Kraus: Grammatik entwickeln, Generator, Syntactic Sugar auflösen
- Ahmad Juha: Typcheck
- Simon Wittmann: Codegen und Tool für ASM
2024-06-29 15:37:02 +00:00
- 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
2024-06-30 18:52:10 +00:00
[//]: # (TODO: - Dokumentation der Tests)
2024-06-25 15:26:56 +00:00
## Besonderheiten unserer Implementierung
2024-06-25 15:47:40 +00:00
- Zugriff auf Felder nur über `this`-Referenz möglich
2024-06-25 15:26:56 +00:00
- `print()`statt `System.out.println()`
2024-06-25 15:47:40 +00:00
- keine Accessmodifier/alles ist public
2024-06-28 20:57:43 +00:00
- 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