再利用性の高いbrainfuck生成言語
- 抽象化されたポインタ操作
- brainfuckに近い命令セット
- ML風のメタプログラミング機構
// Hello World!
module Std = import "std.bfml"
let main = [
*Std:gen_puts "Hello World!\n"
]
- opam をインストールする
- opamで ocaml (>= 4.14) をインストールする
git clone https://github.com/roodni/reusable-bf
cd reusable-bf
opam install .
- コンパイルする
bfml file.bfml
- コンパイルして実行する
bfml -r file.bfml
- brainfuckのプログラムを実行する
bfml -b file.b
examples/hello.bfml
: Hello World!bfml -r examples/hello.bfml
examples/bfi.bfml
: 自分自身を実行可能なbrainfuckインタプリタmkdir _sandbox cd _sandbox bfml ../examples/bfi.bfml > bfi.b bfml ../examples/hello.bfml > hello.b # インタプリタ上で hello.b を動かす echo '\' >> hello.b bfml -b bfi.b < hello.b # インタプリタ上で動くインタプリタ上で hello.b を動かす cp bfi.b input.txt echo '\' >> input.txt cat hello.b >> input.txt bfml -b bfi.b < input.txt
examples/hello2.bfml
: Hello World! コード長削減バージョンexamples/geti.bfml
: 10進数入力examples/fizzbuzz.bfml
: FizzBuzzexamples/addsubmul.bfml
: https://atcoder.jp/contests/abc098/tasks/abc098_a
- ドキュメントは準備中です
- 解説スライド https://www.slideshare.net/roodni/brainfuckbfreusable
- 情報が古いです
- 現状とは構文がだいぶ違います