A Brainfuck interpreter, transpiler and inspector written in Rust
You can install the newest published version of the binary by running:
cargo install bfccbfcc transpile- a Brainfuck to C optimizing transpilerbfcc run- a Brainfuck interpreterbfcc spy- a runtime inspector and soon to be debugger
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.
| 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
These websites have served as great references during development:
- Calmer than you are - Brainfuck optimization strategies
 - Project Nayuki - Optimizing brainfuck compiler
 
- Start implementing optimizations
 - Implement breakpoints, single stepping and register peeking in debugger
 - Add a command that generates LLVM IR, and compiles to a binary
 
# 𝖆𝖉𝖉𝖊𝖓𝖉𝖚𝖒
+ By the way yes I've seen bfc (https://bfc.wilfred.me.uk),
+ and it's totally amazing
- but I didn't see it until after I had written most of this project
- and picked a name on crates.io
@@ Sue me @@
! 😓