すでに気づかれた方もいらっしゃると思いますが,Postscript は「逆ポーラン ド記法」で記述されます.何が逆なのかといえば,たとえば,fortranで "Hello World" という文字列を標準出力に表示するときは,
write(6,*) 'Hello World'というように,「命令→その対象」といったような順番で記述されますが, Postscriptでは
100 100 moveto (Hello World) showというように「対象→命令」といった順番で書かれます. このような記法の場合 スタックというものを使うと効率的に処理でき, Postscriptもスタックを使っています.
Postscriptではオペランドはオペランドスタックに積まれていきます. オペランドとは命令の対象物のことで,"3+9"の場合,"+"オペレータで "3"と"9"がオペランドです. ですから,"/Msaka 100 200"というようにオペランドを記述した 場合,オペランドスタックには上から順に,
200 100 /Msakaといった具合に積み重ねられ,さらに"300 (takeshi)"というオペランドの記述 を追加すると,オペランドスタックは
(takeshi) 300 200 100 /Msakaというような状態になります.そしてオペレータ(実行可能なオブジェクト) はこのスタックの上から順にオペランドを取得していきます. たとえば,このようなオペランドスタックの状態のとき,"show"オペレータを 実行すると,"show"はオペランドスタックの一番上の"(takeshi)"を引っ張り出して その文字列を紙に描くので,オペランドスタックは次のような状態になります.
300 200 100 /Msaka
では,実際にインタプリタで試してみましょう.