Beispiele & Tutorials
Willkommen zur Sammlung von Beispielen und Tutorials für TinyPl0. Diese Sektion bietet praktische Code-Beispiele für alle Lernstufen – von einfachen Programmen bis zu fortgeschrittenen Compilerbau-Konzepten.
Struktur der Beispiele
Die Beispiele sind in mehrere Kategorien unterteilt, basierend auf ihrem Lernziel:
📚 Anhang-Programme
Eine umfangreiche Sammlung von PL/0-Programmen, die klassische Algorithmen und mathematische Konzepte demonstrieren:
- Fibonacci-Berechnung: Rekursive Prozeduren und Schleifen
- Kreisberechnung: Floating-Point-ähnliche Berechnungen mit Integers
- Faktorielles: Iterative und rekursive Ansätze
- Primzahlen: Sieb des Eratosthenes
- Weitere Algorithmen: Sortieren, Suchen, mathematische Funktionen
Diese Programme eignen sich hervorragend, um die Sprachmöglichkeiten von PL/0 kennenzulernen und gleichzeitig die VM zu testen.
Tip
Weitere Anhang-Programme finden Sie im appendix/-Verzeichnis.
🎓 PL/0-Handbuch-Beispiele
Strukturierte Beispiele, die direkt zu den Kapiteln des PL/0-Sprachreferenz-Handbuchs korrespondieren:
- Konstanten und Variablen:
var,constDeklarationen - Arithmetik und Vergleiche: Operationen und Bedingungen
- Kontrollfluss:
if,while, Schleifen - Prozeduren: Deklaration, Aufruf, lokale Variablen
- Ein- und Ausgabe:
?(Input) und!(Output) im extended Dialekt
Ideal für Anfänger, um Sprachkonzepte schrittweise zu erlernen.
Tip
Weitere PL/0-Handbuch-Beispiele finden Sie im handbook/pl0/-Verzeichnis.
Siehe auch: PL/0-Sprachreferenz
⚙️ P-Code-Handbuch-Beispiele
Detaillierte Beispiele, die die Zwischendarstellung und P-Code-Instruktionen erklären:
- Einfache Instruktionen: LIT, LOD, STO, ADD, SUB, etc.
- Kontrollfluss: JMP, JPC (Sprünge)
- Prozeduraufrufe: CALL, RET
- Stack-Operationen: Wie wird der Stack manipuliert?
Diese Beispiele zeigen, wie PL/0-Code in P-Code übersetzt wird und welche Instruktionen die VM ausführt.
Tip
Weitere P-Code-Handbuch-Beispiele finden Sie im handbook/pcode/-Verzeichnis.
Siehe auch: P-Code & VM Handbuch
🚀 P-Code-Tutorial
Ein schrittweises Tutorial, das den Compilierungsprozess von Anfang bis Ende demonstriert:
- Quelle → Tokens: Lexikalische Analyse
- Tokens → Syntaxbaum: Syntaxanalyse
- Syntaxbaum → P-Code: Codegenerierung
- P-Code → Ausführung: Virtuelle Maschine
Perfekt zum Verständnis, wie ein Compiler intern arbeitet.
Tip
Weitere P-Code-Tutorial-Beispiele finden Sie im handbook/tutorial/-Verzeichnis.
Siehe auch: P-Code-Tutorial
💻 CLI-Nutzungs-Beispiele
Praktische Beispiele, die die Kommandozeilen-Schnittstelle demonstrieren:
- Kompilierung mit verschiedenen Optionen
- P-Code-Listing-Ausgabe für didaktische Zwecke
- Ausführung von kompilierten Programmen
- Verschiedene I/O-Modi
Tip
Weitere CLI-Nutzungs-Beispiele finden Sie im usage/-Verzeichnis.
Siehe auch: CLI-Dokumentation
Schneller Einstieg
Ein PL/0-Programm ausführen
dotnet run --project src/Pl0.Cli -- run examples/appendix/fibonacci.pl0
P-Code-Listing anzeigen
dotnet run --project src/Pl0.Cli -- run examples/handbook/pl0/variables.pl0 --list-code
Vorkompilierten P-Code ausführen
dotnet run --project src/Pl0.Cli -- run-pcode examples/handbook/pcode/simple_arithmetic.pcode.txt
Empfohlene Lernreihenfolge
- Anfänger: Starten Sie mit den PL/0-Handbuch-Beispielen (einfache Konzepte)
- Fortgeschrittene: Durchlaufen Sie das P-Code-Tutorial (verstehen Sie den Compiler)
- Experte: Analysieren Sie die P-Code-Handbuch-Beispiele (tief technisch)
- Praktizierend: Erkunden Sie die Anhang-Programme (komplexe Algorithmen)
Weitere Ressourcen
- PL/0-Sprachreferenz – Vollständige Sprachreferenz
- P-Code & VM Handbuch – Instruktionsset und VM-Verhalten
- CLI-Dokumentation – Kommandozeilen-Optionen und Syntax
- API-Referenz – Entwickler-API für erweiterte Nutzung
Tip
Tipp für Ausbildende: Diese Beispiele können als Ausgangspunkt für eigene Übungsaufgaben verwendet werden. Modifizieren Sie die Programme, erweitern Sie sie mit neuen Funktionen, oder schreiben Sie eigene Programme von Grund auf!
Note
Alle Beispiele wurden auf Korrektheit überprüft und funktionieren mit dem aktuellen Stand des Compilers und der VM.