ファイル整理してたらでてきた
昔作ったものです

brainfuckといわれる(ネタ)言語があります

>メモリポインタを1進める
<メモリポインタを1戻す
+ポインタが指してる場所の値を1増やす
-ポインタが指してる場所の値を1減らす
.ポインタが指してる場所の値を出力
,ポインタが指してる場所へ値を入力
[ポインタが指してる場所の値が0なら対応する]の後ろまでジャンプ
]対応する[までジャンプ
これだけの機能しかない言語です

>や+を別の言葉に置き換えた言語もいろいろあります
misaやnyarukoやジョジョ など

今回のは これ系の言語を簡単につくるものです




http://nmm.blog.jp/hp/tool/bfcompiler/maker.html

ページを開くと下の画像のページが出ます
bfa01
それぞれの命令に対応する文字を入力できます
この画像で入ってるのはサンプルです

brainfuckの派生のbraincrashで搭載されたand, or, not, xorと、私が勝手につけたleftshift, rightshift, copy, clearがあります
&ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の論理積をポインタが指している場所に入れる
|ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の論理和をポインタが指している場所に入れる
~ポインタが指してる場所の値のビット反転する
^ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の排他的論理和をポインタが指している場所に入れる
<: ポインタを1進め、ポインタが指してる場所の値をポインタを進める前に指していた場所の値のだけ左シフトした値をポインタが指している場所に入れる
:>ポインタを1進め、ポインタが指してる場所の値をポインタを進める前に指していた場所の値のだけ右シフトした値をポインタが指している場所に入れる
=ポインタを1進め、ポインタが指してる場所の値へポインタを進める前に指していた場所の値を入れる
!ポインタが指してる場所の値を0に戻す
詳細はこんなの
右シフト、左シフトが>>と<<じゃないのはポインタの移動命令と被るから
被ってもいいんだけど
「>>>>」と書いた時にポインタを4回移動してるつもりでも2回右シフトすることになってしまうから
その場合「> > > >」のようにスペースとか文字を間に入れないとダメ
こうなるとめんどうなので被らないように:>と<:にしてます

命令に対応する言葉を決めたら送信を押します
※命令に対応する言葉は何を入れてくれてもいいのですが、#はコメントに使うので使えません
全角#か♯にしてください

送信すると下の画像のページに飛びます

bfa02

URLのGETパラメータでさっき決めた言葉が送られてるのでURL保存しておけば毎回入力しなくてもOKです


このページの見方
上と下で別れてます 色がかわってるとこです

上側は コードを書いてしまってから実行する用
左上のsource codeにコードを書きます
左下のinputに入力する文字を書きます
デフォルトでは「,」の命令で一文字ずつ使われます
右上のoutputには デフォルトは「.」で出力される文字が表示されます
右下のwarningは警告メッセージです
デフォルトで「[」、「]」のwhile文の対応がとれてないときやポインタがメモリの範囲外にいくとメッセージが表示されます
exeボタンを押さなくても、source codeかinputにカーソルがある状態でCtrl+Enterでも実行されます
source code中の#から改行まではコメントとして扱われます
ということで#は命令に使えません

下側は インタプリタモード
左下のコンソールにコードを打ってエンターを押すと実行します
上側と違って次の入力はその続きになります
whileの[が残っていると、対応括弧が残ってるというメッセージが出て、対応する]が来るまで実行されません
コッチ側では改行は使えないので、#が来るとそれ以降が全部コメント扱いになります

出力や入力した文字、警告メッセージは左上のlogに表示されます
終了時のメモリ状態が右上のmemory mapに表示されます
右下のread stringが読み取り用文字、上側のinputと同じで「,」で読み取る文字です

また 特殊命令として
\clearlogをクリア
\resetメモリ状態とポインタ位置を初期状態に戻す。whileの途中データも削除
\?命令一覧を表示
\help
があります


適当に楽しんでください




おまけ

公開してなかった前のバージョン

http://nmm.blog.jp/hp/tool/bfcompiler/bfmaker.html

機能は少なめ
でも1ページで完結してるので命令に対応する文字をその場で変更できます

とりあえずNyarukoのHelloWorld実行例

bf01

ジョジョのも試してみたけど紹介ページの例が間違ってるぽく動かなかった
whileの閉じカッコの方が多いとか明らかなミスが…