Stack und Arithmetik



Der Stack ist eine Datenstruktur, bei der der Zugriff nach der LIFO-Methode erfolgt (Last In, First Out).
PostScript verwaltet vier solcher Stacks, wobei im folgenden mit Stack immer der 'operand stack' gemeint ist, falls nicht ausdrücklich etwas anderes dabei steht. (s.a. Die 4 verschiedenen Stacks)

Jedes PostScript Objekt kann auf dem Stack abgelegt werden; respektive wird jedes Objekt, das in einem PostScript Programm auftaucht, auf dem Stack abgelegt.

Anmerkungen zur Notation: Es ist üblich den Stack als eine Zeile von Objekten darzustellen, wobei das erste Element (ganz links) das unterste Element des Stacks wiedergibt und das letzte Element (ganz rechts) das oberste Stackelement repräsentiert.

Operator: Ein Operator ist ein Wort, das den Interpreter zu einer 'Aktion' veranlaßt. Operatoren entsprechen den Kommandos und Prozeduren in anderen Programmiersprachen.



Stack Operatoren

Um mit dem Stack arbeiten zu können sind einige Operatoren unverzichtbar. Es sollte z.B. möglich sein Elemente vom Stack zu nehmen, die Reihenfolge der Elemente zu verändern oder Elemente zu duplizieren.

Operatoren sind: pop, clear, exch, roll, dup, copy, index, count, mark, cleartomark, counttomark

Neben diesen Operatoren gibt es auch noch interaktive Stack Operatoren. Viele Drucker haben auch einen interaktiven Modus, der den direkten Zugang zum Interpreter ermöglicht.

Dafür gibt es die folgenden speziellen Operatoren: =, = =, pstack, stack



Arithmetik

Die arithmetischen Operatoren holen sich ihre Operanden vom Stack und üblicherweise entfernen sie diese dann vom Stack und legen dafür das Ergebnis der Operation darauf ab.
Bei den Operatoren ist auf die Postfixnotation zu achten!

Um etwa die Zahlen 3 und 5 zu addieren ist folgendes zu programmieren: Es wird also zuerst eine 3 auf den Stack gelegt, dann eine 5 und dann der Operator add. Bei add stellt der Interpreter fest, daß es sich um einen Operator handelt und führt die zugehörige Aktion aus. Es wird also die 3 und die 5 vom Stack genommen; dann addiert (das add wird natürlich auch wieder vom Stack genommen); und das Ergebnis auf den Stack gelegt. War der Stack also vorher leer, so liegt nach dieser Aktion die 8 als einziges Objekt auf dem Stack.

Es gibt folgende arithmetische Operatoren: add, sub, mul, div, idiv, mod, neg, abs, ceiling, floor, round, truncate, sqrt, atan, cos, sin, exp, ln, log, rand, srand, rrand



Siehe auch:
Operatoren / Stack
Operatoren / Konvertierung
Operatoren / Arithmetik und Mathematik


© Holger Gehringer, Dezember 1998