Ein einfaches, aber vollständiges Projekt zur Umsetzung eines Interpreters mit Lexer, Parser, AST und Interpreter in Python.
Die entworfene Mini-Sprache unterstützt Variablen, einfache Rechenoperationen sowie Befehle wie SET, ADD, SUB und PRINT.
- 🔤 Lexer: Erkennt Schlüsselwörter, Zahlen, Operatoren, Bezeichner etc.
- 🌳 Parser: Erstellt einen Abstract Syntax Tree (AST)
- 🧮 Interpreter: Führt den AST aus (Zuweisung, Rechnen, Ausgabe)
- 🧾 Unterstützt mehrere Anweisungen in einer Sitzung
Eingabe:
SET x = 10;
ADD x 5;
SUB x 3;
PRINT x;
Ausgabe:
Wert von x: 12.0
| Element | Beschreibung |
|---|---|
SET |
Variable setzen (SET x = 5;) |
ADD |
Wert zur Variable addieren (ADD x 2;) |
SUB |
Wert von Variable subtrahieren (SUB x 1;) |
PRINT |
Ausgabe einer Variable (PRINT x;) |
+ - * / |
Arithmetische Operationen in Ausdrücken |
; |
Abschluss einer Anweisung |
python compiler.pyDann kannst du den Code interaktiv eingeben, z. B.:
SET a = 3 + 2 * 4;
PRINT a;
main.py # Enthält Lexer, Parser, AST und Interpreter
README.md # Diese Datei
Dieses Projekt entstand im Rahmen meines Selbststudiums im Studiengang Cyber Security (B.Sc.) mit dem Ziel, Konzepte aus Compilerbau, theoretischer Informatik und Sprachverarbeitung praxisnah umzusetzen.
Ziel war es, die typischen Verarbeitungsschritte einer Programmiersprache abzubilden:
- Lexikalische Analyse (Tokenizer)
- Syntaxanalyse (Parser + AST)
- Semantische Auswertung (Interpreter)
- Studierende, die Compiler- oder Interpreterkonzepte in Python verstehen möchten
- Lehrzwecke, z. B. zur Visualisierung von Sprachverarbeitung
- Portfolio-Projekte, z. B. im Kontext von Stipendien oder Bewerbungen
Die Codebasis ist so gestaltet, dass Erweiterungen einfach möglich sind (siehe unten).
IF/ELSE/WHILE(Kontrollstrukturen)- Logische Operatoren (
==,>,<,AND,OR) PRINT x + 1;(Ausdrucksausgabe statt nur Variablen)- Unterstützung für Kommentare im Quelltext (
# ...) - Fehlermeldungen mit Kontext (Zeile, Token)
- Keine Typprüfung (alle Werte sind
float) - Keine Funktionen oder Scoping
- Kein Fehlermanagement für Division durch 0 o. ä.
- Nur lineare Programmausführung (keine Kontrollflussverzweigungen)
Ich studiere Cyber Security (B.Sc.) im berufsbegleitenden Studium mit großem Interesse an theoretischer Informatik, IT-Forensik und Compilertechnik.
Dieses Projekt entstand zur eigenständigen Vertiefung praktischer Fähigkeiten im Bereich Sprachverarbeitung und soll als Portfolio-Beispiel dienen.
Dieses Projekt steht unter der MIT-Lizenz.
Eine LICENSE-Datei kann bei Bedarf im Repository ergänzt werden.