Plik postscriptowy jest plikiem tekstowo-binarnym. Operatory (operatory, to inaczej polecenia języka, np. operator
lineto powoduje narysowanie linii) i argumenty (argumenty to wartości liczbowe, np.: polecenie
10 20 lineto zawiera dwa argumenty i jeden operator) są przechowywane w formie tekstowej, natomiast dane (np. graficzne) mogą być zapisywane w formie tekstowej lub binarnej.
Fot. 1.
Przykład kodu programu w języku PostScript
Język PostScript oparty jest na ONP (
Odwrotnej Notacji Polskiej). Oznacza to, że w zapisie (np. wywołania funkcji) występują najpierw parametry, a potem nazwa operatora. Np. zapis
10 20 add oznacza, że należy wziąć dwie liczby (10 i 20), a następnie je dodać.
Jeśli liczby oznaczają współrzędne, to są one podawane w punktach typograficznych (jeden punkt typograficzny jest równy 1/72 cala). Punkt 0, 0 (początek układu współrzędnych) leży w lewym dolnym narożniku kartki.
Operacje w języku PostScript wykonywane są na tzw. stosie. Np. we wspomnianym wyżej przykładzie zawartość stosu przed wykonaniem operacji wyglądałaby tak:
--- początek stosu
10
20
--- koniec stosu
Operator
add „konsumuje” ze stosu dwie dane, a wynik odkłada na stos. Po wykonaniu operatora
add stos będzie wyglądał tak:
--- początek stosu
30
--- koniec stosu
W dokumentacji języka PostScript sytuację tę opisuje się tak:
num1 num2 add num3
co oznacza, że operator
add pobiera dwie liczby i zwraca jedną.
Z kolei zapis:
num1 num2 moveto ---
oznacza natomiast, że operator
moveto pobiera dwie liczby, ale nie zwraca nic. I odwrotnie:
--- currentcmykcolor num1 num2 num3 num4
oznacza, że operator
currentcmykcolor nie pobiera danych, za to zwraca na stos cztery liczby.
Jak w każdym języku programowania, również i tu można definiować zmienne, np. zapis:
/test 2 def
oznacza, że zmiennej
test przypisaliśmy wartość 2.
Zmienne przechowywane są w tzw. słownikach. Słownik, to zestaw par klucz

wartość. Interpreter przechowuje słowniki na stosie (w programie – lista
Stos słownikowy). Kiedy program szuka wartości dla zadanego klucza przegląda stos słownikowy zaczynając od słownika znajdującego się na jego szczycie. Jeśli w słowniku tym nie zostanie znaleziona dana zmienna – program przeszukuje następny słownik, itd. aż do znalezienia zmiennej (lub stwierdzenia, że zmienna nie istnieje, co oczywiście spowoduje przerwanie pracy interpretera z podaniem odpowiedniego komunikatu błędu).
Słownik
systemdict zawiera predefiniowane zmienne i operatory.
Oczywiście nie jest zadaniem tego opisu przedstawienie pełnego opisu PostScriptu. Pełna dokumentacja języka znajduje się
pod tym adresem. Plik zawiera specyfikację PostScriptu poziomu 3 i w oparciu o tę dokumentację zbudowano omawiany tu interpreter tego języka.