Sprachelemente |
|
Motivation |
Die kleine Sprache ppl soll eine
Spezialsprache für die Erzeugung von Bildern sein. Es soll
an diesem kleinen aber nichttrivialen Beispiel die Arbeitsweise der einzelnen
Phasen eines Compilers und die eines Interpretierers
demonstriert werden.
|
| |
Datentypen |
Diese Spezialsprache zur Erzeugung und Manipulation
von Bildern soll zur einfachen Bildbearbeitung
einen eingebauten Datentyp für Bilder besitzen.
Dieser wird sowohl Graustufenbilder als auch RGB-Bilder
unterstützen (mit externer Speicherung als .ppm oder .pgm).
|
| |
Operationen |
als Operationen sollen pixelweise Farbwertmanipulationen,
zum Beispiel Gammakorrektur oder Invertieren der Helligkeit
unterstützt werden. Bilder sollen gespiegelt oder gedreht
werden können und sie sollen kombiniert werden können.
Bilder können nebeneinander oder übereinander angeordnet werden,
Farbwerte können pixelweise addiert, subtrahiert und multipiziert werden,
oder es können das Minimum oder das Maximum gewählt werden, ...
|
|
Der Satz an Bildoperationen soll nach einem einfachen Schema
erweiterbar sein.
|
| |
Koordinaten |
Zur Berechnung von Koordinaten sind ganze Zahlen
und einfache Operationen auf ganzen Zahlen nötig.
Die Sprache muss also einen Datentyp für ganze Zahlen unterstützen.
|
| |
Farben |
Die Farben (oder Grauwerte) sollen durch Fließkommazahlen im Intervall
0.0 (schwarz) bis 1.0 (weiß) dargestellt werden. Die Sprache muss also
einen Fließkomma-Datentyp und einfache Operationen darauf unterstützen.
|
| |
Dateinamen |
Zum Laden und Speichern werden Dateinamen benötigt. Es muss
also eine einfache Unterstützung von Zeichenketten realisiert sein.
|
| |
Listen |
zur Konstruktion von zusammengesetzten Daten, zum Beispiel für
einen Polygonzug als Parameter oder für mehrere Werte als Resultat
werden entweder records oder Felder
benötigt. Hier sollen Listen als Verallgemeinerung von Feldern
und einfache Operationen auf Listen realisiert werden.
|
| |
Kontrollstrukturen |
|
| |
Zuweisungen |
Es soll eine einfache imperative Sprache entwickelt werden,
also eine Sprache mit Programmvariablen und Zuweisungen.
Es sollen mehrfache (parallele) Zuweisungen unterstützt werden.
Variablen müssen deklariert sein. Variablen sollen statisch getypt sein.
|
| |
Verzweigungen und Schleifen |
Als Verzweigung soll ein if-then-else Konstrukt dienen,
als Schleifen sollen while- und repeat- Schleife realisiert werden.
|
| |
Prädikate |
In Schleifen und Verzweigungen kommen Prädikate vor,
die Sprache muss also einen Datentyp für Boolesche Werte
und die entsprechenden Operationen darauf unterstützen.
|
| |
Blöcke |
für die Verwendung von lokalen Variablen soll ein Block-Konstrukt
zur Verfügung stehen.
|
| |
Funktionen |
sollen ebenfalls unterstützt werden, da sie ein
unverzichtbares Mittel zur Strukturierung von Programmen
sind. Außerdem soll die Technik der Implementierung von rekursiven
Funktionen durch einen Laufzeitkeller demonstriert werden.
|
| |