Befungeインタープリタ

2次元指向言語BefungeをJavaScriptで実装してみた。難解言語シリーズ第二弾。

Befungeについて

Befungeは難解プログラミング言語の一種である。その特徴はなんといってもプログラムの流れが上下左右に蠢くことである。

普通のプログラミング言語(Brainf**k含む)の場合プログラムの流れは1方向に進み、ときにジャンプするといったものであるが、Befungeのプログラムは一文字ずつが命令をなすコードが2次元空間上に配され、プログラムカウンタ(PC)がそのフィールド上を命令を実行しながら動く。命令によってPCの動く方向を上下左右に変えることができるのである。

また、Befungeには自身のコードの参照・改変(それぞれg,pがこれに当たる)が可能であり、自身のコードが配されたフィールドを記憶領域として扱うこともできる。

Befunge-93はフィールドが80×25に制限されている(そのためチューリング完全ではない。)が、Funge-98ではこの制限がなくなり、チューリング完全となっている。Funge-98ではBefungeの概念を1次元や3次元にも拡張し(それぞれUnifunge,Trifungeと呼ばれる)、さらには任意の次元についても拡張できるとされている。

なお、今回はBefunge-93を実装した。Funge-98の邦訳ドキュメントが見当たらないのと、Funge-98の処理系が見当たらないのが理由である。第一3次元のコードってどう記述するんだって・・・。

詳しい話は以下のリンクを参照されたし。

プログラム

以下のリンクからどうぞ。

Befungeのサンプルプログラムは以下のサイトが豊富。

インタープリタ仕様