Befungeエディタは、プログラミング言語Befungeの開発環境です。
Befungeは、1993年に作られたいわゆる難解プログラミング言語の1つです。
記号1つにつき1つの命令を表し、記号は一列に並んでいるのではなく、二次元的に並んでいます。
プログラムは記号の命令を1つずつ実行していくわけですが、実行する向きは上下左右に変更でき、テキストの上をあちらこちらと駆けまわります。
また、大きな特徴として、自己変更的であるという点があります。後述のg命令やp命令は、プログラムのテキスト自体を参照したり変更したりします。ただし、ファイルそのものが変更されるわけではなく、あくまで実行中のみです。
Befungeには、符号付き32ビット整数のスタックが1つだけあります。変数はありません。スタックとは、値を順番に積んだり(追加したり)取り出したりできるというものです。値をスタックの一番上に積むことをプッシュといい、一番上を取り出すことをポップといいます。
例えば、空のスタックに2・3・5を順番に積むと、スタックは
2 3 5
という状態になります。ここでポップすると、スタックは
2 3
になります。
また、ファイルの上下と左右はそれぞれループしています。したがって、ファイルの左端からさらに左へ移動すると、右端に移動します。ファイルが空の状態で実行すると無限ループとなってしまうので、注意しましょう。
実行の最初の位置は左上で、向きは右になっています。
記号 | 動作 |
---|---|
< | 実行の向きを左にする。 |
^ | 実行の向きを上にする。 |
> | 実行の向きを右にする。 |
v | 実行の向きを下にする。 |
_ | スタックをポップして、その値が0なら実行の向きを右に、0以外なら左にする。 |
| | スタックをポップして、その値が0なら実行の向きを下に、0以外なら上にする。 |
? | 実行の向きを上下左右のどれかにランダムに変更する。 |
# | 次の文字の命令を実行しない。 |
@ | 実行を終了する。 |
0〜9 | その数値をスタックにプッシュする。 |
" | 次の"までを文字列とみなし、ASCIIコードを順にスタックにプッシュする。 |
, | スタックをポップして、それをASCIIコードとみなして1文字出力する。 |
. | スタックをポップして、その値を出力し、さらに半角スペースを出力する。 |
~ | 1文字入力させ、そのASCIIコードをスタックにプッシュする。 |
& | 数値を入力させ、その値をスタックにプッシュする。 |
+ | スタックからb,aを順にポップし、a+bの値をプッシュする。 |
- | スタックからb,aを順にポップし、a-bの値をプッシュする。 |
* | スタックからb,aを順にポップし、a*bの値をプッシュする。 |
/ | スタックからb,aを順にポップし、a/bの値をプッシュする。 |
% | スタックからb,aを順にポップし、aをbで割ったあまりをプッシュする。 |
` | スタックからb,aを順にポップし、a>bでなら1を、そうでなければ0をプッシュする。 |
! | スタックをポップして、その値が0なら1を、0以外なら0をプッシュする。 |
$ | スタックをポップする(その値は使用しない)。 |
: | スタックをポップして、その値を2回プッシュする。 |
\ | スタックから2つポップして、順を逆にして2つをプッシュする。 |
g | スタックからy,xを順にポップして、プログラムの(x,y)の位置の文字のASCIIコードをスタックにプッシュする。 ただしプログラムの左上は(0,0)です。 |
p | スタックからy,x,aを順にポップして、プログラムの(x,y)の位置の文字のASCIIコードをaに置き換える。 |
Befungeエディタでは、複数のファイルを同時に開くことができます。
各ファイルでは、ピンク色のカーソルがあり、カーソルキーやマウスで移動させることができます。
また、マウスでドラッグしたり、Shift+カーソルキーを使うことで、複数マスの範囲選択をすることができます。このときできる操作は、削除と範囲移動です。
範囲移動は、範囲選択をしているときにCtrl+カーソルキーを押すと、選択部分全体をその方向にずらすというものです。
通常のテキストエディタと同様に、キーボードから入力できます。ただし、半角文字しか入力できません。入力すると、カーソルは次に移ります。このとき移動する方向は、カーソルキーで移動したり「<」「^」「>」「v」を入力するとその方向に変わります。
また、Insertキーを押すと固定モードとなり、入力した後にカーソルが移動しません。もう一度Insertキーを押すと解除できます。
入力した文字の削除は、半角スペースで上書きするか、Backspace(1つ戻って削除)・Delete(その場で削除)を使用します。
「ファイル」メニューから、「新規作成」「開く」「上書き保存」「名前を付けて保存」ができます。「上書き保存」は、Ctrl+Sのショートカットキーが使用可能です。
また、ウィンドウにファイルをドラッグ&ドロップすることでもファイルを開くことができます。
F1キーを押すと、現在カーソルがある文字のASCIIコードを表示します。
また、現在開いているタブを閉じるには、タブを右クリックして「閉じる」を選択します。
実行に関するコマンドは、「実行」「ステップ実行」「停止」の3種類があります。
普通に現在開いているコードを実行します。F5キーでも実行することができます。
一命令ずつ実行する方法です。Enterキーを押すと次に進みます。この状態で「実行」すると、続きから通常の実行を行ないます。
ステップ実行を中止したり、また、実行すると出てくる出力欄などを消去します。
編集時、F9キーを押すとその地点をブレークポイントに設定します。通常の実行中でも、ここを通るとステップ実行に切り替わります。同じ場所でF9キーを押すと、解除できます。
メニューの「実行」で、次のオプションが設定できます。
ソフトの本体です。このファイルを起動すると、ソフトが起動します。
このファイルです。
Befungeプログラミングのコツなどを書いてあります。
中には起動に必要なファイルが入っています。buttons.bmpを編集すると、ツールバーのアイコンを変更することができます。
Befungeのコードのサンプルがいくつか入っています。