ファイル整理してたらでてきた
昔作ったものです
昔作ったものです
▼ おーぷん ▼
brainfuckといわれる(ネタ)言語があります
>や+を別の言葉に置き換えた言語もいろいろあります
misaやnyarukoやジョジョ など
今回のは これ系の言語を簡単につくるものです
http://nmm.blog.jp/hp/tool/bfcompiler/maker.html
ページを開くと下の画像のページが出ます
それぞれの命令に対応する文字を入力できます
この画像で入ってるのはサンプルです
brainfuckの派生のbraincrashで搭載されたand, or, not, xorと、私が勝手につけたleftshift, rightshift, copy, clearがあります
右シフト、左シフトが>>と<<じゃないのはポインタの移動命令と被るから
被ってもいいんだけど
「>>>>」と書いた時にポインタを4回移動してるつもりでも2回右シフトすることになってしまうから
その場合「> > > >」のようにスペースとか文字を間に入れないとダメ
こうなるとめんどうなので被らないように:>と<:にしてます
命令に対応する言葉を決めたら送信を押します
※命令に対応する言葉は何を入れてくれてもいいのですが、#はコメントに使うので使えません
全角#か♯にしてください
送信すると下の画像のページに飛びます
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と同じで「,」で読み取る文字です
また 特殊命令として
適当に楽しんでください
おまけ
公開してなかった前のバージョン
http://nmm.blog.jp/hp/tool/bfcompiler/bfmaker.html
とりあえずNyarukoのHelloWorld実行例
ジョジョのも試してみたけど紹介ページの例が間違ってるぽく動かなかった
whileの閉じカッコの方が多いとか明らかなミスが…
これだけの機能しかない言語です
> メモリポインタを1進める < メモリポインタを1戻す + ポインタが指してる場所の値を1増やす - ポインタが指してる場所の値を1減らす . ポインタが指してる場所の値を出力 , ポインタが指してる場所へ値を入力 [ ポインタが指してる場所の値が0なら対応する]の後ろまでジャンプ ] 対応する[までジャンプ
>や+を別の言葉に置き換えた言語もいろいろあります
misaやnyarukoやジョジョ など
今回のは これ系の言語を簡単につくるものです
http://nmm.blog.jp/hp/tool/bfcompiler/maker.html
ページを開くと下の画像のページが出ます
それぞれの命令に対応する文字を入力できます
この画像で入ってるのはサンプルです
brainfuckの派生のbraincrashで搭載されたand, or, not, xorと、私が勝手につけたleftshift, rightshift, copy, clearがあります
詳細はこんなの
& ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の論理積をポインタが指している場所に入れる | ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の論理和をポインタが指している場所に入れる ~ ポインタが指してる場所の値のビット反転する ^ ポインタを1進め、ポインタが指してる場所の値とポインタを進める前に指していた場所の値の排他的論理和をポインタが指している場所に入れる <: ポインタを1進め、ポインタが指してる場所の値をポインタを進める前に指していた場所の値のだけ左シフトした値をポインタが指している場所に入れる :> ポインタを1進め、ポインタが指してる場所の値をポインタを進める前に指していた場所の値のだけ右シフトした値をポインタが指している場所に入れる = ポインタを1進め、ポインタが指してる場所の値へポインタを進める前に指していた場所の値を入れる ! ポインタが指してる場所の値を0に戻す
右シフト、左シフトが>>と<<じゃないのはポインタの移動命令と被るから
被ってもいいんだけど
「>>>>」と書いた時にポインタを4回移動してるつもりでも2回右シフトすることになってしまうから
その場合「> > > >」のようにスペースとか文字を間に入れないとダメ
こうなるとめんどうなので被らないように:>と<:にしてます
命令に対応する言葉を決めたら送信を押します
※命令に対応する言葉は何を入れてくれてもいいのですが、#はコメントに使うので使えません
全角#か♯にしてください
送信すると下の画像のページに飛びます
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と同じで「,」で読み取る文字です
また 特殊命令として
があります
\clear logをクリア \reset メモリ状態とポインタ位置を初期状態に戻す。whileの途中データも削除 \? 命令一覧を表示 \help
適当に楽しんでください
おまけ
公開してなかった前のバージョン
http://nmm.blog.jp/hp/tool/bfcompiler/bfmaker.html
機能は少なめ
でも1ページで完結してるので命令に対応する文字をその場で変更できます
とりあえずNyarukoのHelloWorld実行例
ジョジョのも試してみたけど紹介ページの例が間違ってるぽく動かなかった
whileの閉じカッコの方が多いとか明らかなミスが…
▲ くろーず ▲