6 releases
Uses old Rust 2015
0.1.5 | Jan 30, 2015 |
---|---|
0.1.4 | Jan 24, 2015 |
0.1.2 | Dec 13, 2014 |
0.1.1 | Nov 14, 2014 |
#1072 in Programming languages
9KB
146 lines
A simple procedural macro that turns a Brainfuck program into native code.
Example:
#![feature(phase)]
#[phase(plugin)] extern crate brainfuck_macros;
use std::io;
fn main() {
let hello_world = brainfuck!{
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>
---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
};
hello_world(&mut io::stdin(), &mut io::stdout()).unwrap();
}
See tests/
and examples/
for some basic examples and the
bf_bf_interpreter
subpackage for
brainfuck interpreter written in brainfuck.
This is Cargo enabled, and so can be used
by adding a [dependencies.brainfuck_macros]
section pointing to this
git repository to your Cargo.toml. If you wish to also use
bf_bf_interpreter
, simply add [dependencies.bf_bf_interpreter]
section also pointing to this repository.
Specs
Normal brainfuck, with:
- a tape length of 30000,
- cells storing unsigned bytes (with wrapping),
- EOF indicated by returning -1, and
- out-of-bounds index steps ignored (i.e.
<
when pointing at the first cell is just ignored, and similarly for>
at the last).