libbf
Brainfuck-like language library.
This library can define a variant of Brainfuck-like language parser
and can run parsed program.
Examples
Use predefined Brainfuck interpreter
`bf' feature flag is needed to compile this example.
use libbf::{predefined::bf, runtime};
use std::io;
fn main() {
let source = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";
let program = bf::parser()
.parse_str(source)
.expect("Failed to parse");
runtime::run(&program, io::stdin(), io::stdout()).expect("Failed to run");
}
Define Brainfuck interpreter
use libbf::{parser::Parser, runtime, token::simple::SimpleTokenSpec};
use std::io;
fn main() {
let parser = Parser::new(
SimpleTokenSpec {
ptr_inc: '>', ptr_dec: "<", data_inc: "+".to_string(), data_dec: '-',
output: '.',
input: ',',
loop_head: '[',
loop_tail: ']',
}
.to_tokenizer(),
);
let source = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";
let program = parser.parse_str(source).expect("Failed to parse");
runtime::run(&program, io::stdin(), io::stdout()).expect("Failed to run");
}
Feature flags
all - all features
predefined - predefined parsers below
bf - predefined Brainfuck parser
ook - predefined Ook! parser