brainfuck方言のB'z言語を作った
レビューさぼって何書いてんだおれは。
B’z言語の命令とbrainfuckの命令の対応は次の通り。
bf | B’z言語 |
---|---|
> | ウルトラソウッ! |
< | ハァイ! |
+ | B’zの、 |
- | シンパイナイモンダイナイナイナイザッツライフイッツオーライ |
. | B’zのLIVE-GYMにようこそ!!! |
, | 松本に相談しようか |
[ | (´.-`) |
] | (■∋■)ヴェイ! |
以下のbrainfuckコードがあったとする。
>+++++++++
[<++++++++>-]
<.>+++++++
[<++++>-]
<+.+++++++..+++.
[-]
>++++++++
[<++++>-]
<.>+++++++++++
[<+++++>-]
<.>++++++++
[<+++>-]
<.+++.------.--------.
[-]
>++++++++
[<++++>-]
<+.
[-]
++++++++++.
B’z言語の文法規則ファイルを用意する。
{
"rshift": "ウルトラソウッ!",
"lshift": "ハァイ!",
"inc": "B'zの、",
"dec": "シンパイナイモンダイナイナイナイザッツライフイッツオーライ",
"write": "B'zのLIVE-GYMにようこそ!!!",
"read": "松本に相談しようか",
"loop_begin": "(´.-`)",
"loop_end": "(■∋■)ヴェイ!"
}
これを使って、前回紹介した拙作ツールでbrainfuckコードをB’z言語に変換する。
$ bft /path/to/code.bf -t /path/to/bz-lang-grammar-json > code.bz
こうなる。
ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zのLIVE-GYMにようこそ!!!ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zの、B'zのLIVE-GYMにようこそ!!!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zのLIVE-GYMにようこそ!!!B'zのLIVE-GYMにようこそ!!!B'zの、B'zの、B'zの、B'zのLIVE-GYMにようこそ!!!
(´.-`)シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zのLIVE-GYMにようこそ!!!ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zのLIVE-GYMにようこそ!!!ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zのLIVE-GYMにようこそ!!!B'zの、B'zの、B'zの、B'zのLIVE-GYMにようこそ!!!シンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライB'zのLIVE-GYMにようこそ!!!シンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライシンパイナイモンダイナイナイナイザッツライフイッツオーライB'zのLIVE-GYMにようこそ!!!
(´.-`)シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ウルトラソウッ!B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、
(´.-`)ハァイ!B'zの、B'zの、B'zの、B'zの、ウルトラソウッ!シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
ハァイ!B'zの、B'zのLIVE-GYMにようこそ!!!
(´.-`)シンパイナイモンダイナイナイナイザッツライフイッツオーライ(■∋■)ヴェイ!
B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zの、B'zのLIVE-GYMにようこそ!!!
B’z言語の文法規則ファイルを指定してコードを実行。
$ bfi /path/to/code.bz -t /path/to/bz-lang-grammar-json
実行結果:
Hello World!
もっといい言語チョイスのアイデアがあれば、じゃんじゃん改造すればいいと思う。
余談
著作権的にまずければこの記事消します。
あとはてなブログのシンタックスハイライト機能にbrainfuckも指定できるなんて初めて知った。