Dieses Projekt ist auf die Fachinformatiker-Ausbildung in Deutschland ausgerichtet. Lernrelevante Dokumentation und Kommentare werden zweisprachig gepflegt: zuerst Deutsch, danach Englisch. Beide Textblöcke sollen ein gut verständliches Sprachniveau B2 (GER/CEFR) einhalten, damit auch nicht-muttersprachliche Auszubildende alle Inhalte sicher nachvollziehen können.
This project targets vocational IT training (Fachinformatiker) in Germany. Learner-facing documentation and comments are maintained bilingually: German first, English second. Both language blocks are expected to follow B2 (CEFR/GER) readability so non-native trainees can fully understand compiler construction concepts and project workflows.
Dieses Repository dient der Portierung des historischen PL/0-Beispielcompilers (Pascal) nach C# auf .NET 10.
Die fachliche und technische Zieldefinition steht im Pflichtenheft:
Lizenz: MIT - siehe LICENSE.
Die Portierung orientiert sich an zwei klaren Dialekten:
classic
- Kompatibel zum vorliegenden Pascal-Referenzcode.
- Fokus auf historische Semantik und VM-Verhalten.
extended
- Konsolidierte EBNF inkl.
? ident(Input) und! expression(Output) auf Basis der ANTLR-PL/0-Grammatik.
Referenzquellen im Repository:
- Datentyp: nur
integer. - Prozeduren sind unterstützt, Parameter/Funktionsrückgaben nicht.
- Dialekte:
classic: ohne?/!.extended: mit Eingabe? identund Ausgabe! expression.
- Architekturdiagramm und Pascal->C# Mapping:
docs/ARCHITECTURE.md
- Sprachumfang/EBNF:
docs/LANGUAGE_EBNF.md
- VM-Befehlssatz:
docs/VM_INSTRUCTION_SET.md
- Traceability-Matrix (Regel -> Pflichttests):
docs/TRACEABILITY_MATRIX.md
- Qualitäts- und Coverage-Übersicht:
docs/QUALITY.md
Fuer src/Pl0.Ide gilt die vierteilige Version Major.Minor.Patch.Build mit folgender Bedeutung:
Minor: aktuelle PR-NummerPatch: Anzahl Commits im aktuellen PR-BranchBuild: manueller Buildzaehler (vor jedemdotnet build/dotnet testerhoehen)
Die .NET-10-Solution ist angelegt:
TinyPl0.slnsrc/Pl0.Coresrc/Pl0.Vmsrc/Pl0.Clisrc/Pl0.Idetests/Pl0.Tests
Zusätzlich sind umgesetzt:
CliOptionsParserfür die Pascal-kompatiblen Compiler-Switches.- Ein erster Lexer (
Pl0Lexer) mit Zeilen-/Spalten-Tracking. - Parser + Symboltabelle + Codegenerator (
Pl0Parser/Pl0Compiler). - VM/Interpreter (
VirtualMachine) inklusive Stack-Maschine und I/O-Adapter (ConsolePl0Io,BufferedPl0Io). - CLI-Subcommands:
compile,run,run-pcode(inkl.--out,--list-code,--emit). - P-Code Serialisierung/Deserialisierung (
PCodeSerializer) für Datei-Workflow. - End-to-End-Tests für
source -> pcode -> vmintests. - Terminal-GUI-IDE (
Pl0.Ide) mit Quellcode-Editor, Kompilieren/Ausführen, Export (asm/cod) und Schritt-Debugging überSteppableVirtualMachine. - Vollständiger 8.2-Testdatenkatalog (41 Pflicht-
.pl0-Fälle) inkl. erwarteter Artefakte:tests/data/expected/catalog/cases.json
Voraussetzung: FreePascal (fpc) oder Delphi-kompatibler Compiler.
Beispiel:
fpc pl0c.pas
./pl0cdotnet restore
dotnet build
dotnet test# Kompilieren nach .pcode
dotnet run --project src/Pl0.Cli -- compile tests/data/pl0/valid/feature_const_var_assignment.pl0 --out /tmp/example.pcode# PL/0 Quelltext direkt ausführen
dotnet run --project src/Pl0.Cli -- run tests/data/pl0/valid/feature_io_q_bang_relops.pl0# Vorhandene .pcode Datei ausführen
dotnet run --project src/Pl0.Cli -- run-pcode tests/data/expected/code/feature_io_q_bang_relops.pcode.txt# Code-Liste ausgeben (didaktisch)
dotnet run --project src/Pl0.Cli -- run tests/data/pl0/valid/feature_const_var_assignment.pl0 --list-code --wopcoddotnet run --project src/Pl0.Ide- Git-Repository ist initialisiert.
.gitignorefür .NET/C#/Visual Studio/JetBrains ist vorhanden.- Core/VM/CLI sind inklusive End-to-End-Workflow (
source -> pcode -> vm) umgesetzt. Pl0.Ideist als eigenes Projekt in die Solution integriert und durch Tests abgesichert.- Qualitäts- und Architekturprüfungen laufen über die Test-Suite (
ArchitectureGuardTests, Traceability-/Golden-/E2E-Tests).
- Der Branch
mainist geschützt; direkte Commits/Pushes aufmainsind nicht erlaubt. - Für jede Änderung zuerst einen neuen, sauberen Arbeits-Branch erstellen.
- Änderungen ausschließlich per Pull Request nach
mainintegrieren.
Dieses Projekt entstand mit starker Unterstützung durch Agentic-AI-Technologien. Die Verwendung von KI-Agenten spielte eine zentrale Rolle bei:
- Architektur & Design: Automatisierte Analyse von Anforderungen und Ableitung der Systemarchitektur.
- Code-Generierung: Unterstützung bei der Implementierung von Lexer, Parser, Compiler und VM.
- Testing & Validierung: Systematische Generierung von Testfällen und Überprüfung der Compliance.
- Dokumentation: Automatisierte Erstellung von API-Dokumentation, Handbüchern und Architekturdokumentation.
- Qualitätssicherung: Statische Codeanalyse, Fehlerdetection und Optimierungsvorschläge.
Neben der praktischen Implementierung eines Compilers dient dieses Projekt auch als Fallstudie zur Untersuchung, wie Agentic-AI sinnvoll in der Fachinformatiker-Ausbildung eingesetzt werden kann:
- Pädagogischer Mehrwert: Wie können AI-Agenten Auszubildende beim Erlernen komplexer Compilerbau-Konzepte unterstützen?
- Produktivität: Wie beschleunigt die Zusammenarbeit mit AI-Agenten die Entwicklung, ohne die Lerneffekte zu schmälern?
- Qualität: Wie trägt Agentic-AI zu besserer Code-Qualität, Dokumentation und Testabdeckung bei?
- Transparenz: Wie bleibt die Nachvollziehbarkeit und Validierbarkeit der generierten Artefakte gewährleistet?
Dieses Projekt zeigt, dass Agentic-AI nicht als Ersatz für manuelles Lernen gedacht ist, sondern als produktive Werkzeug und Lernpartner für professionelle Softwareentwicklung in der Ausbildung.