この記事は(も)Kogakuin Univ Advent Calendar 2019 - Adventar23日目です。
もう片方はコチラ
はいまた遅刻です。すいません
metarinです
今回はBrainf*ckの派生言語、BrainCrashの紹介をします
が、普通に書いてみたら予想以上にBrainf*ckの内容になってしまってあげく記事分割することになってしまいました。
なのでこっちは内容がNULLですがご了承ください…
そもそも Brainf*ck is 何?
今日分のもう片方を読んでね(はーと)
Brainf*ck との違い
BrainCrashはBrainf*ckを拡張した言語です
以下の2つの違いがあります
-
新たな4つの命令
│, &, ~, ^ の4つの論理演算を行う命令が追加されました
命令と意味の対応はこちら命令 処理 | ポインタを1つ進め、もともと指していた値と現在指している値でORを取り、現在指している値に代入 & ポインタを1つ進め、もともと指していた値と現在指している値でANDを取り、現在指している値に代入 ~ 現在のポインタの指す値にNOT演算し、代入 ^ ポインタを1つ進め、もともと指していた値と現在指している値でXORを取り、現在指している値に代入 -
仕様追加
- 先頭13Bが Hello, world
(72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33)
で初期化される - プログラム終了時に、
[.>]
が実行される
- 先頭13Bが Hello, world
実行環境
Brainf*ckの処理系をちょっと拡張するだけで作れます。
自分でも書いてみました。動作テストはしてません(コンパイルは通ったし大丈夫じゃないかなぁ🤔)
https://gist.github.com/metarin/7c9ccd511ba5df05b576e1e8a4485278
Hello, world!
仕様の追加により、とても簡単にHello, worldを書けるようになりました
そのプログラムがコチラ!
え? 何も表示されないって?
そりゃ何も書いてないからね!
まともに解説すると、何も書かないことによってメモリの初期値であるHello, world!
が出力されています
使ってみる
……論理演算使う処理が浮かばない
何か浮かんだら書きます
小学生並みの感想
処理系を実装したり、何も書かなくてもHello, worldが出たりするのが面白かったです。