UweSchmidt / ppl

Picture Programming Language, an example for a DSL, a compiler and a virtual machine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dieses Verzeichnis enthält die Quellen und Beispiele
für die eine Spezialsprache zur Manipulation von Bildern:
ppl (Picture Programming Language).

Die Quellen bestehen aus Haskell Dateien *.hs im Unterverzeichnis src.
Eine Haskell Quelle Parser.hs ist mit dem happy Parsergenerator
aus der Grammatikspezifikation Parser.y erzeugt worden.

Um das System zu nutzen muss nur das Haskell Build System "stack" installiert
sein (http://docs.haskellstack.org/en/stable/README.html). Dieses sorgt
dafür, dass der richtige ghc und die richtigen Bibliotheks-Versionen zum
Compilieren genutzt werden.

Zum Erzeugen des Compilers pplc
        make setup  # nur das 1. Mal
	make all    # oder "stack install"
aufrufen.

Beispiele sind *.ppl, im Verzeichnis "examples".
Diese zeigen die Verwendung fast aller eingebauten Operationen.

Um den Compiler zu testen und um trace Ausgaben der einzelnen
Compiler-Läufe zu erhalten und alle Beispiele zu erzeugen,
bitte einmal
	make ex
ausführen.

Die im Augenblick unterstützten
externe Bildformate sind .ppm (portable pixmap) und .pgm (portable grey map).
Eingelesen werden können .pgm und .ppm files
sowohl im ascii als auch im raw format. Ausgegeben
werden die Bilder im .ppm oder .pgm raw format mit 256 Farben oder Graustufen.

Zum Konvertieren von anderen Bildformaten bitte "convert" (ImageMagick) oder
die pbm-tools nutzen.

pplc --help listet die Funktionen des pplc Compilers
Dieser enthält auch einen eingebauten Interpretierer.

Mutige können

	make all ex
	xv examples/gen/*.*

aufrufen zum Erzeugen des Compilers, zum
Ausführen der Beispielprogramme und zum
Betrachten der Ergebnisse.
(Anstatt xv geht natürlich auch ein anderer viewer)

Viel Spass (und wenig Frust) beim Ausprobieren

Uwe Schmidt

uwe@fh-wedel.de

About

Picture Programming Language, an example for a DSL, a compiler and a virtual machine

License:MIT License


Languages

Language:Haskell 94.5%Language:Yacc 4.9%Language:Makefile 0.6%