Compilerbau Projektideen in C

Aus ahrensburg.city
Zur Navigation springen Zur Suche springen

Compilerbau Projektideen in C

Anfänger

  1. Schreibe ein Programm, das eine einfache arithmetische Ausdruckssprache parst und auswertet.
  2. Implementiere einen Lexer, der eine Zeichenkette in Token zerlegt.
  3. Schreibe einen Parser, der eine Liste von Token in einen abstrakten Syntaxbaum (AST) umwandelt.
  4. Implementiere einen einfachen Interpreter, der den AST auswertet und das Ergebnis ausgibt.
  5. Schreibe ein Programm, das eine einfache logische Ausdruckssprache (AND, OR, NOT) parst und auswertet.
  6. Implementiere einen Lexer und Parser für eine einfache Programmiersprache mit Variablenzuweisungen und Ausdrücken.
  7. Schreibe ein Programm, das eine einfache Programmiersprache mit Schleifen (for, while) parst und auswertet.
  8. Implementiere einen Lexer und Parser für eine einfache Programmiersprache mit Funktionen und Funktionsaufrufen.

Fortgeschritten

  1. Schreibe einen Parser, der eine erweiterte arithmetische Ausdruckssprache mit Klammern und Operatorpräzedenz parst.
  2. Implementiere einen Codegenerator, der den AST in eine einfache Zwischensprache (Intermediate Representation, IR) umwandelt.
  3. Schreibe einen Optimierer, der einfache Optimierungen auf der IR durchführt (z.B. konstante Ausdrücke zusammenfassen).
  4. Implementiere einen Backend-Codegenerator, der die IR in Assembly-Code für eine bestimmte Architektur umwandelt.
  5. Schreibe einen Parser und Codegenerator für eine Programmiersprache mit komplexen Datentypen (Arrays, Strukturen).
  6. Implementiere einen Optimierer, der Schleifenunrolling und Inlining von Funktionen durchführt.
  7. Schreibe einen Backend-Codegenerator, der die IR in Maschinencode für verschiedene Architekturen umwandelt.
  8. Implementiere einen Debugger, der den generierten Code zur Laufzeit überwacht und Fehler diagnostiziert.

Profi

  1. Schreibe einen vollständigen Compiler für eine einfache Programmiersprache, der Quellcode in ausführbaren Maschinencode umwandelt.
  2. Implementiere fortgeschrittene Optimierungstechniken wie Registerallokation und Schleifenoptimierung.
  3. Schreibe einen JIT-Compiler (Just-In-Time), der zur Laufzeit Code generiert und ausführt.
  4. Implementiere eine Garbage Collection für die Programmiersprache, die automatisch nicht mehr benötigten Speicher freigibt.
  5. Schreibe einen Compiler für eine Programmiersprache mit objektorientierten Konzepten (Klassen, Vererbung).
  6. Implementiere fortgeschrittene Optimierungstechniken wie Common Subexpression Elimination und Dead Code Elimination.
  7. Schreibe einen JIT-Compiler, der zur Laufzeit Profiling-Daten sammelt und basierend darauf Optimierungen durchführt.
  8. Implementiere eine fortgeschrittene Garbage Collection, die verschiedene Algorithmen (Mark-and-Sweep, Generational) unterstützt.