Rustでbrainfuck方言生成器つくった
リポジトリはこれ。
https://github.com/guricerin/bf-derivatives-tool
使い方はまあREADMEを見てもらえればわかる。
このページから拝借させて頂いたジョジョ言語の場合なら、まず以下のようなjsonファイルを用意する。
{
"rshift": "ふるえるぞハート!",
"lshift": "燃えつきるほどヒート!!",
"inc": "オラ",
"dec": "無駄",
"write": "ァ!",
"read": "やれやれだぜ",
"loop_begin": "おまえの次のセリフは「",
"loop_end": "」という!"
}
ほんで上記の文法規則に対応したスクリプトファイルを書く。
ふるえるぞハート!
オラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラ
おまえの次のセリフは「燃えつきるほどヒート!!オラオラオラオラオラオラ
ふるえるぞハート!無駄」という!
燃えつきるほどヒート!!オラオラオラオラオラオラオラオラァ!
無駄無駄無駄ァ!
オラオラオラオラオラオラオラァ!ァ!
オラオラオラァ!ふるえるぞハート!
オラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラ
おまえの次のセリフは「ふるえるぞハート!オラオラ燃えつきるほどヒート!!無駄」という!
ふるえるぞハート!オラオラオラオラオラオラオラオラオラオラオラオラァ!
無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄ァ!
燃えつきるほどヒート!!燃えつきるほどヒート!!オラオラオラオラオラオラオラオラァ!
無駄無駄無駄無駄無駄無駄無駄無駄ァ!
オラオラオラァ!
無駄無駄無駄無駄無駄無駄ァ!
無駄無駄無駄無駄無駄無駄無駄無駄ァ!
ふるえるぞハート!
ふるえるぞハート!
オラオラオラオラオラオラオラオラオラオラオラオラオラオラァ!
そして以下のコマンドを走らせたら hello, world.
と出力されるはず。
$ bfi /path/to/code/file -g /path/to/grammar/json/file
内部的には、与えられたjsonファイルの文法規則からbrainfuckのトークンへ、正規表現を使ってマッピングしている。なのでbrainfuck生成器とは言えないかもしれない。
また、インタプリタが使うメモリの要素を u8
型にしているので 0 ~ 255
の範囲を外れるとパニックする。
ネット上にあるいくつかのサンプルプログラムはこれが原因で正常に動作しない。まあおれのプログラムがバグってるだけという可能性もある。
ここ数ヶ月はスマホだのwindowsだののGUIアプリばっか書いてるから、入門書をちょろっと見て以来手つかずのrustを使うのはやたらと苦労した。
rustの難しさを抜きにしてもCUIアプリの作成にひいひい言わされてるのに、GUIなんて雑魚エンジニアが手軽に作れるもんとちゃうわな。
つーかiOSの仕様はなんなんすかあれ。アプリをまともにデプロイしようとしたらごっつい金とられるの。アプリ側からファイルシステムにまともにアクセスできないのもわけわからん。たぶんセキュリティを考慮してのことと思うけど、それにしたってガチガチすぎる。appleはおれのような馬の骨にまともなアプリを作らせる気がないのだろう。