ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[PostScript] PostScript bindオペレータ Cnt'd

 
前回(bindオペレータの仕様)の続き.
今回は、PostScript bind オペレータ の検証.

<解説>
以下、各ケースでの bind 対象の手続きは hoge.
ケース1 では、bind なしで hoge を定義しており、hoge 内の add で実行されるのは再定義した add である.
ケース2 では、hoge は、bind を介して定義しているので、add は、組み込み add が呼び出される.しかし、foo はオペレータ名ではないので、実行時に名前解決されていることに注意.
ケース3 では、hoge の定義の前に add を再定義しているので、hoge の bind 時には、add はオペレータ名とはみなされていない.したがって、実行時名前解決となる.


ケース1 bind なし.

<<ソース>>
/foo {(foo_a) ==} def
/hoge {1 1 add foo} def
/add {pop pop (add_b) ==} def
/foo {(foo_b) ==} def
hoge

<<実行結果>>
GPL Ghostscript 8.60 (2007-08-01)
Copyright (C) 2007 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>(bind1.ps) run
(add_b)
(foo_b)

GS>


ケース2 bind あり.

<<ソース>>
/foo {(foo_a) ==} def
/hoge {1 1 add foo} bind def
/add {pop pop (add_b) ==} def
/foo {(foo_b) ==} def
hoge

<<実行結果>>
GPL Ghostscript 8.60 (2007-08-01)
Copyright (C) 2007 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>(bind2.ps) run
(foo_b)
GS<1>pstack
2

GS<1>


ケース3 bind あり(オペレータ名なし).

<<ソース>>
/add {pop pop (add_a) ==} def
/foo {(foo_a) ==} def
/hoge {1 1 add foo} bind def
/add {pop pop (add_b) ==} def
/foo {(foo_b) ==} def
hoge

<<実行結果>>
GPL Ghostscript 8.60 (2007-08-01)
Copyright (C) 2007 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>(bind3.ps) run
(add_b)
(foo_b)

GS>
<<PostScript bindオペレータ | ホーム | PostScript 辞書の中身を見る>>

コメント

コメントの投稿

管理者にだけ表示を許可する

画像の文字を半角数字で下記ボックスに記入ください。
文字が読みにくい場合はブラウザの更新をすると新しい文字列が表示されます。