Brainfuck インタープリタ書いた

Brainfuck のコードを PostScript に変換して実行するタイプです。
使い方は

gs -q -dNODISPLAY -dBATCH -- このPSファイル Brainfuckプログラム

です。

%!PS
/in(%stdin)(r)file def
/out(%stdout)(w)file def
/source ARGUMENTS 0 get(r)file def

/memory [30000{0}repeat] def
/pointer 0 def

/p++{/pointer pointer 1 add def}def
/p--{/pointer pointer 1 sub def}def
/++{memory pointer 2 copy get 1 add put}def
/--{memory pointer 2 copy get 1 sub put}def
/putchar{out memory pointer get write}def
% End of File を読んだら -1 をセットする
/getchar{memory pointer in read not{-1}if put}def
% End of File を読んだら何もしないバージョン
% /getchar{memory pointer in read{put}if}def
/if0break{memory pointer get 0 eq{exit}if}def

[
    {
        source read{
            /char exch def
            char 62 eq{/p++ cvx}if
            char 60 eq{/p-- cvx}if
            char 43 eq{/++ cvx}if
            char 45 eq{/-- cvx}if
            char 46 eq{/putchar cvx}if
            char 44 eq{/getchar cvx}if
            char 91 eq{[/if0break cvx}if
            char 93 eq{]cvx/loop cvx}if
        }{
            exit
        }ifelse
    }loop
]cvx exec