BrainFuck Part.2 <[+-.,]>
■ このスレッドは過去ログ倉庫に格納されています
0552デフォルトの名無しさん
2007/10/25(木) 23:50:37初めから順に
・プログラムカウンタの形式(つまり認めるプログラムの方向)
Pは上限なしの正への一方向。下端は1。Nは上限なしの正への一方向。下端は0。Zは上下限なしの正負双方向。
プログラムカウンタの初期値を後に続ける。
・メモリ1区画の形式
最初の文字はSなら符号付き、Uなら符号なし。
次の数字は符号部を含むビット数。無限長ならI。
最後の文字列は、まずオーバーフロー時のループを認めるならv、認めずエラーにするならe。無限長の場合はeのみ。
次にメモリの初期値が全て0なら0、不定値ならx。
・ポインタの形式
メモリ区画と同じ書式。
・メモリ配置
ポインタの有効値全体ならR。そうでなければ、有効値が全体と一致するようなポインタをメモリ区画と同じ書式で書き、
ポインタが無効値を指した時点でエラーならp、無効値にアクセスした時点でエラーならaを後に付ける。
・[]の対応の扱い
実行前にチェックして正しくなければエラーにするならC。
そうでない場合は、
-まず[に対応する]が足りないとき、そこで実行エラーにするならe、プログラムの正方向の終端に飛ぶならj。
-次に]に対応する[が足りないとき、そこで実行エラーにするならe、プログラムの負方向の終端に飛ぶならj。
・プログラムの最終命令実行後(+および[で対応する]が足りないときにジャンプした時)の挙動
終了するならE、プログラムカウンタの初期値に戻るならL。
の順で書く。
たとえば「N0S32v0SIe0ReeE」なら、こういうbrainfuckを表す。
(N0)一方向プログラムで先頭は0、初期値も0
(S32v0)メモリの区画はそれぞれ符号付き32ビット整数でオーバーフローあり、初期値は全部0
(SIe0)ポインタは符号付き無限長整数、初期値0
(R)ポインタの有効範囲に全部メモリあり、つまりメモリ空間は正負双方向に無限にある
(ee)[]が対応してない場合は、見つからなかった時点でエラーになる
(E)プログラムの最後まで実行したら終了
うん、これは流行らない
■ このスレッドは過去ログ倉庫に格納されています