| Crates.io | libbf |
| lib.rs | libbf |
| version | 0.1.3 |
| created_at | 2022-04-10 13:16:38.61178+00 |
| updated_at | 2022-04-10 14:41:33.765576+00 |
| description | Brainfuck-like language library |
| homepage | |
| repository | https://github.com/yoh2/libbf-rs |
| max_upload_size | |
| id | 565076 |
| size | 62,667 |
Brainfuck-like language library.
This library can define a variant of Brainfuck-like language parser and can run parsed program.
`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");
}
use libbf::{parser::Parser, runtime, token::simple::SimpleTokenSpec};
use std::io;
fn main() {
// Create parser with token specification.
let parser = Parser::new(
SimpleTokenSpec {
// You can specify tokens with `ToString` (`char`, `&str`, `String`, etc.)
ptr_inc: '>', // char
ptr_dec: "<", // &str
data_inc: "+".to_string(), // 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");
}
all - all featurespredefined - predefined parsers belowbf - predefined Brainfuck parserook - predefined Ook! parser