Compiler-CampusMinden / CB-Vorlesung-Bachelor

Lecture "Compilerbau" (B.Sc.)
https://www.hsbi.de/elearning/goto.php?target=crs_1089779&client_id=FH-Bielefeld
Creative Commons Attribution Share Alike 4.0 International
1 stars 0 forks source link

Repo: flatten folder structures #262

Closed cagix closed 3 weeks ago

cagix commented 3 weeks ago

Die Ordnerstrukturen übersetzen sich in die Strukturen des generierten Menüs des Skripts. Da die Studierenden sich mehrfach über die Tiefe der Verlinkung beschwert hatten, soll mit diesem PR die Ordnerstruktur auf eine Hauptebene reduziert werden: Die einzelnen Phasen/Bausteine der Compiler-Pipeline bekommen einen eigenen Ordner, darunter kommen direkt die Inhalte.

Damit die Ordner auch in der GH-Preview in der richtigen Reihenfolge auftauchen, erfolgt zusätzlich eine Nummerierung der Ordner.

Was hältst Du von folgender Top-Level-Ordner-Struktur für CB/CPL:

  • Intro
  • Lexing
  • Parsing
  • Semantics (-> Attributierte Grammatiken, Symboltabellen, Typ-Inferenz)
  • Interpretation (-> AST-basierte Interpreter, VM)
  • Code Generation (-> Bytecode, Assembler, ...)
  • Optimisation (-> lokal, global, JIT)
  • Memory Management (-> Runtime)

Das ist ungefähr die Struktur aus dem "Modern Compiler Design" von Dick Grune.

Ich überlege, ob ein zusätzlicher Ordner für "Intermediate Representation" sinnvoll wäre? Dafür spräche, dass Dinge wie AST, SSA, LLVM-IR, MLIR, ... ein gemeinsames Zuhause bekommen würden. Dagegen spricht (leicht), dass die anderen Ordner "Phasen" sind (also eigentlich Verben), während der Zwischencode ein "Zustand" ist (also eigentlich ein Substantiv). Was denkst Du?

Eine andere Überlegung ist, den Ordnern eine Nummer voranzustellen ("00-intro"). Damit wären sie auch im GitHub in der Preview vernünftig sortiert. Allerdings bedeutet das auch, dass wir bei späterem Hinzufügen neuer Ordner dann immer die folgenden Ordner umbenennen müssen. Wie siehst Du das?