Skip to content

Latest commit

 

History

History
102 lines (77 loc) · 2.67 KB

README.md

File metadata and controls

102 lines (77 loc) · 2.67 KB

reusable-bf

再利用性の高いbrainfuck生成言語

  • 抽象化されたポインタ操作
  • brainfuckに近い命令セット
  • ML風のメタプログラミング機構

Playgroundで試せます

// Hello World!

module Std = import "std.bfml"

let main = [
  *Std:gen_puts "Hello World!\n"
]

インストール

準備

  1. opam をインストールする
  2. 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: FizzBuzz
  • examples/addsubmul.bfml: https://atcoder.jp/contests/abc098/tasks/abc098_a

資料