bfcc

A Brainfuck interpreter, transpiler and inspector written in Rust

Usage

Installation

You can install the newest published version of the binary by running:

bash cargo install bfcc

Commands

Optimization

During transpilation the AST gets converted into an intermediary representation that gets optimized in multiple passes.

Although I haven't tested these optimizations enough to provide any sort of guarantee, these optimizations all seem to generate functionally equivalent programs.

Implementation status

| | Strategy | File | | --- | ----------------------------------- | ---------------------- | | ✅ | Fusing increment/decrement commands | fuse_add.rs | | ✅ | Fusing movements | fuse_movements.rs | | ✅ | Deferring movements | defer_movements.rs | | ✅ | Unrolling zero/clear loops | unroll_zero_loops.rs | | | Unrolling copy loops | | | | Unrolling multiplication loops | |

All transforms can be found under src/transpiler/transforms

References

These websites have served as great references during development:

Todo

🧠 🦀