A Brainfuck compiler, built from scratch as a way to learn how compilers work.
Status: planning. No code yet. The full roadmap is in PLAN.md.
A byte tape (30,000 cells, all zero) and a pointer into it. Eight commands; everything else is a comment.
| Cmd | C equivalent |
|---|---|
> |
ptr++; |
< |
ptr--; |
+ |
(*ptr)++; |
- |
(*ptr)--; |
. |
putchar(*ptr); |
, |
*ptr = getchar(); |
[ |
while (*ptr) { |
] |
} |
source.bf → lexer → parser (IR) → optimizer → backend
├─ interpreter
├─ C source (→ gcc/clang)
└─ x86-64 asm (→ nasm → ld)
- Interpreter with a precomputed jump table
- Lexer and parser producing a flat IR
- Optimizer: run-length folding, clear/scan/copy loops, offset ops
- C backend
- Native x86-64 backend (NASM, Linux)
- Stretch: JIT, LLVM IR, WebAssembly
See PLAN.md for details and references.