Compilerbau 2024 Gruppe : absolut nicht Haskell - Simon Wittmann, Laurenz Schleicher, Julian Kraus, Ahmad Juha, Jonathan Fleischmann
Go to file
2024-07-01 18:18:09 +02:00
output added some e2e tests for CodeGenFiles with reflections 2024-06-27 19:10:43 +02:00
presentation Added folder presentation and init the slidev presentation 2024-06-24 21:33:40 +02:00
src only accept DEBUG=true 2024-07-01 18:18:09 +02:00
.gitignore added .ide to gitignore 2024-04-24 15:26:54 +02:00
pom.xml cleaned a bit and added implementation in CodegeneratorTests which executes all the codeGen tests 2024-06-29 16:50:06 +02:00
README.md update details of readme 2024-06-30 23:14:40 +02:00

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

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