b1ek e34bb583a1 | ||
---|---|---|
examples | ||
src | ||
.gitignore | ||
Cargo.toml | ||
README.md |
README.md
BrainRustFucked
YABI (Yet Another Brainfuck Interpretator)
This is designed to embed BrainFuck for applications.
This library provides 2 functions:
/**
* Eval the code from a raw string returning the memory
*/
fn eval(bf_str: &&str) -> Result<[u8; 30000], String>
/**
* A more low level function to run code in custom environment
* This is useful when you want to use presetted memory & pointer
*/
fn eval_mem(bf_str: &&str, mem: &mut [u8], pointer: &mut usize) -> Result<(), String>
Example code:
// print "Hello world!"
eval(&"++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.").unwrap();
Also check out examples/
directory
Using this as command-line interpreter
There is an example eval_file
, which you can compile to a standalone binary
cargo b --release --example=eval_file
cd target/release/examples
# those two are optional, they are needed to reduce the size of binary
# its recommended but if they fail its no big deal
strip eval_file
upx eval_file
cp eval_file /usr/bin/eval_file # or other directory that is in $PATH
hash -r # run this just in case to refresh $PATH in your terminal
eval_file file.b # 1st argument is the name of the file