Version 2.24 [2018/6/22] バージョンにて作成。 プログラミング言語BrainF**kの解釈エンジンです。(BrainF**kについてはこちらをご覧ください:https://ja.wikipedia.org/wiki/Brainfuck 使い方: CommonEv挿入:InitializeMemoryManager CommonEv挿入:S[output] = CommonEv[Brainfuck] / S[code] / S[input] 文章:\s[output] Ev入力の「code」欄にプログラムのコードを文字列として入れて、さらに「input」欄にプログラマ作動時に入れたい入力値(いわゆるstdinというもの)を文字列として入れれば、プログラマの出力値(stdout)がコモンEvの返り値として指定した文字列変数に保存されます。 注意点は以下です: 1、このコモンは、tikubonn様の「バイナリ」及び「UTF-8」コモンを使用しています。   導入前は【必ず!】tikubonn様の「バイナリコモン」と「文字列をバイナリ変換するコモン」の両方を導入してください。 2、導入後は2つ設定する必要のある変数があります。   一つ目はInitializeMemoryManagerコモンイベントの CSelf99[anchor] という変数を、「15000000 + MemoryManagerコモンイベントの番号×100」に、「データを呼ばない」チェックを入れて設定します。例えばMemoryManagerが350番のコモンイベントなら、「15035000」に設定します。InitializeMemoryManagerとMemoryManagerは別のコモンイベントですのでご注意ください。   二つ目はBrainFuckコモンイベントの CSelf99[anchor] という変数を「15000000 + 自分のコモンイベントの番号×100」に、「データを呼ばない」チェックを入れて同じ風に設定します。例えばBrainFuckが350番のコモンイベントなら、「15035000」に設定します。 3、実行時はまずInitializeMemoryManagerを呼び出してから、BrainFuckコモンイベントを呼び出してください。 4、メモリーの実装が余りにも低効率なため、実行時にはよく「1フレームあたりの処理が500000個を超えました」という警告が出ます。   左クリックするなりエンターキーを押すなりで無視してください。   実際の例として、「Hello World!」を実行する時は10回ぐらい警告が出ましたが最後にちゃんと出力が「Hello World!」だったので良しとしました。 5、上記の2と同じ理由で、使用可能なメモリー領域にも制限されています。   デフォルトはコード・コード実行時に利用するメモリー領域・stdin各128バイト、メモリーマップは以下の通りです。 Offset 0x000 --------------------------------        (未使用) 0x040 -------------------------------- 0x080  コード(128Bytes) - インストラクションポインター初期値は0x40 0x0c0 -------------------------------- 0x100  利用可能なメモリー(128Bytes) - データポインター初期値は0xc0 0x140 -------------------------------- 0x180  入力の内容ががここに置かれる(128Bytes) 0x1c0 -------------------------------- しかし、メモリー領域の大きさはそれぞれ変更できます。BrainFuckコモンイベントの一番上にある databuf_size, instbuf_size, inputbuf_size 変数がその設定です。 6、使用済みのメモリー領域を回収する機能(C言語のfree()関数・C++のdelete指令みたいなもの)が未実装なため、一回実行が終わったらメモリーリークが発生します。解決するにはゲームを再起動するか、MemoryManagerコモンイベントのCSelf9, CSelf10変数をクリアしてください。 7、リアルタイムのI/Oが未実装です。つまり実行中に入力を追加することができませんし、実行が全て終わるまで出力内容が見られません。必ず最初から入力内容を文字列として指定してください。 8、データの増減操作はwrap-aroundが発生します。つまり 255 + 1 == 0・0 - 1 == 255 になります。   データポインターが有効範囲外になると、指している値を読み込もうとするときにエラーが発生して中断します。   インストラクションポインターが有効範囲外になるとエラーを出さずに中断します。   入力内容ポインターが有効範囲外(いわゆるEOF)になると、何も起こりません。データポインターが指している値が変わりませんし、プログラム中断もしません。 9、UTF-8ライブラリを使用していますが、BrainF**kにおいてあらゆるI/Oはバイト単位で行われます。   なのでASCII以外の文字(日本語とか)を入力すると、1文字あたりに3回の読み込みが必要になるかもしれません。   出力は最後に一気にデータ列から文字列に変換するのではなく、1バイトの出力が用意されたらすぐにバイト単位で文字に変換される仕様ですので、そもそも日本語を出力できません。 a、画像に表示されているコマンドライン環境は別のコモンイベントです。この.commonファイルには「コモンイベント形式のBrainF**k解釈エンジンと、それを実行するために必要なもの」のみ入っています。