実行制御演算子、手続き演算子及び状態演算子

Execute

Execute演算子は、次に示す1個のオペランドをとる。

  • <x: Any> ]]>
  • <x: 任意> そして、そのオペランドの型に応じて、次に示す結果を返す。

    x is of type Operator, it is executed. ]]> xの型が演算子型である場合、xを実行する。

    xの型が手続き型である場合、その手続き中のトークン列を、それが 内容中に出現した場合と同様に解釈する。

    xの型が識別子型であり、かつその実行可能性属性が実行可能で ある場合、その識別子を、それが内容中に場合と同様に解釈する。

    xの型が識別子型でありかつその実行可能性属性がリテラルで ある場合、又はxの型がその他の型である場合、xをオペランドスタックに積む。

    Exit

    Exit演算子は、オペランドをとらず、結果も返さない。

    繰り返し演算子Repeat、Loop、For又はForAll によって解釈されている手続き中でExit演算子を解釈すると、 その繰り返し演算子の解釈が終了する。 繰り返し演算子が入れ子になっている場合、Exit演算子を含む手続きを 解釈している演算子の解釈だけが終了する。

    Exit演算子が、Repeat、Loop、For、又は ForAll演算子によって解釈されている手続きの中以外の任意の文脈に出 現した場合、InvalidExitをオペランドとしてRaiseErrorを実行する。

    For

    For演算子は、次に示す4個のオペランドをとる。

  • <proc: Procedure>
  • <limit: Number>
  • <increment: Number>
  • <initial: Number> ]]>
  • <proc: 手続き>
  • <limit: 数>
  • <increment: 数>
  • <initial: 数> 結果は返さない。 この演算子は手続きを、Execute演算子の場合と同様に、しかし繰り返 し 解釈する。

    procの1回ごとの解釈に先立ち、1個の値をprocオペランドとしてオペラン ドスタックに積む。この値は、initialから始まってlimitまで、1回の解釈につ きincrementずつ変化する。 For演算子の解釈は、procのオペランドとしてオペランドスタック に置くべき値が、limitより大きいとき(incrementが正の場合)、又は limitより小さいとき(incrementが負の場合)、終了する。

    For演算子の解釈は、procの解釈中にExit演算子が出現した 場合、limitに達する前であっても終了する。

    ForAll

    ForAll演算子は、次に示す2個のオペランドをとる。

  • <proc: Procedure>
  • <x: VectorReference, DictionaryReference, or OctetStringReference> ]]>
  • <proc: 手続き>
  • <x: ベクタ参照、辞書参照又はオクテット列参照> 結果は返さない。 xによって参照されるオブジェクトの要素(x辞書参照 である場合には参照する辞書中のキーと値との対)を列挙し、それらの 要素(又はキーと値との対)のそれぞれについて1回ずつprocを解釈する。 この演算子は、手続きを、Execute演算子の場合と同様に、しかし 繰り返し解釈する。

    参照)。

    ForAll演算子の解釈は、 ForAll演算子の解釈は、procの解釈中にExit演算子が出現し た場合、xのすべての要素(又はキーと値との対)が列挙され終わる前であっても、 終了する。

    GetDeviceDescription

    GetDeviceDescription演算子はオペランドをとらず、次に示す1個の 結果を返す。

  • <devdict: DictionaryReference> ]]>
  • <devdict: 辞書参照> ここで、devdictDeviceDescription状態変数の現在の値とする (参照)。

    If

    If演算子は、次に示す2個のオペランドをとる。

  • <proc: Procedure>
  • <cond: Boolean> ]]>
  • <proc: 手続き>
  • <cond: 論理> 結果は返さない。しかし、procを解釈した場合、その結果がオペランドスタッ ク上に残ってもよい。

    この演算子は、condの値が真である場合、Execute演算子の場合と同様 に手続きを解釈する。

    この演算子は、IfElse

    IfElse演算子は、次に示す3個のオペランドをとる。

  • <proc1: Procedure>
  • <proc0: Procedure>
  • <cond: Boolean> ]]>
  • <proc1: 手続き>
  • <proc0: 手続き;
  • <cond: 論理> proc0 or proc1 may leave results on the operand stack. ]]> 結果は返さない。しかし、proc0又はproc1がその結果をオペランドスタッ ク上に残してもよい。

    proc0 is interpreted as though by the Execute operator. ]]> この演算子は、Execute演算子の場合と同様 にproc0を解釈する。

    proc1 is interpreted as though by the Execute operator. ]]> この演算子は、Execute演算子の場合と同様 にproc1を解釈する。

    Loop

    Loop演算子は、次に示す1個のオペランドをとる。

  • <proc: Procedure> ]]>
  • <proc: 手続き> 結果は返さない。 この演算子は、手続きを、Execute演算子の場合と同様に、しかし procの解釈中にExit演算子が出現するまで、繰り返し解釈する。

    Noop

    Noop演算子は、オペランドをとらず、結果も返さない。 この演算子は仮想機械の状態にはなんら影響を与えない。

    Repeat

    Repeat演算子は、次に示す2個のオペランドをとる。

  • <proc: Procedure>
  • <n: Cardinal> ]]>
  • <proc: 手続き>
  • <n: 非負整数> 結果は返さない。 この演算子は、手続きを、Execute演算子の場合と同様に、ただし n回順次解釈するが、Exit演算子が出現するとそこで解釈を終了する。

    RestoreGraphicsState

    RestoreGraphicsState演算子は、オペランドをとらず、結果も返さない。 RestoreGraphicsState operator causes the entire graphics state, including the values of all state variables (see ), to be restored from the last Graphics State saved by interpretation of the SaveGraphicsState operator. ]]> refid=meddocprは恐らくrefid=hstvarの間違い。(高橋) RestoreGraphicsState演算子は、すべての状態変数(参照) の値も含め全作図状態を、SaveGraphicsState演算子の解釈によって 退避された最後の作図状態に復元する。

    RestoreGraphicsState演算子の解釈は、通常、作図状態スタックを ポップすることになる。 ただし、作図状態スタックの上端にある退避された作図状態がSaveState 演算子によって暗黙的に作られた場合、又は最も近い上位のブロックの開始時 に作られた場合、作図状態スタックのポップは行なわれず、作図状態スタックは 変化しない。 RestoreState演算子だけが、SaveState演算子によって作られた 作図状態スタック上の項目を取り除くことができる。

    RestoreGraphicsStateXCP

    RestoreGraphicsStateXCP演算子は、オペランドをとらず、結果も返さ ない。 RestoreGraphicsStateXCP operator causes the entire graphics state, including the values of all state variables except CurrentPosition (see ), to be restored from the last Graphics State saved by interpretation of the SaveGraphicsState operator. ]]> refid=meddocprは恐らくrefid=hstvarの間違い。(高橋) RestoreGraphicsStateXCP演算子の解釈は、CurrentPosition (参照)以外のすべての状態変数を含めた全作図状態を、 SaveGraphicsState演算子の解釈によって退避された最後の作図状態に 復元する。

    RestoreGraphicsStateXCP演算子の解釈は、通常、作図状態スタックを ポップすることになる。 作図状態スタックの上端にある退避された作図状態がSaveState演算 子により暗黙的に作られた場合、すなわち最も近い上位のブロックの開始時に 作られた場合、作図状態スタックのポップは行なわれず作図状態スタックは変 化しない。

    RestoreSavedGraphicsState

    RestoreSavedGraphicsState演算子は、オペランドをとらず結果も返さ ない。 RestoreSavedGraphicsState演算子の解釈は、すべての状態変数の値 (参照)も含め全作図状態を退避する。

    RestoreSavedGraphicsState演算子は、SaveState演算子によっ て退避された作図状態にいきつくまで、又は作図状態スタック(16.2参照) の底にある作図状態にいきつくまで、繰り返し、作図状態スタックをポップする。 その後、その作図状態に復元するためにRestoreGraphicsState演算子を 暗黙的に実行する。 復元された作図状態は作図状態スタックに残る。

    RestoreState

    RestoreState演算子は、次に示す1個のオペランドをとる。 <s: 退避オブジェクト> 結果は返さない。 RestoreState演算子の作用は、作図状態、作図状態スタック、状態変数 群及び被参照オブジェクトの集合を、sが退避された時点における状態に復元す ることとする(参照)。

    文脈スタック又はオペランドスタックが、InvalidRestoreをオペラン ドとしてRaiseErrorを実行する。 RestoreState演算子は、その作図状態を復元するために RestoreSavedGraphicsState演算子を暗黙的に実行する。その後、作図 状態スタックをポップし、sを作ったSaveState演算子がそこに置いた項 目を取り除く。

    SaveGraphicsState

    SaveGraphicsState演算子は、オペランドをとらず、結果も返さない。 SaveGraphicsState演算子の解釈は、すべての状態変数の値 (参照) も含め全作図状態を作図状態スタックに退避する。

    SaveState

    SaveState演算子は、オペランドをとらず、次に示す1個の結果を返す。

  • <s: SaveObject> ]]>
  • <s: 退避オブジェクト>

    SaveState演算子の作用は、作図状態の現状態を作図状態スタックに退 避し、作図状態スタック、状態変数群及び被参照オブジェクトの集合 を含む退避オブジェクトsを作ることとする(参照)。 SaveState演算子は、SaveGraphicsState演算子を論理的に実行 することにより作図状態を退避する。