2 个版本
使用旧的 Rust 2015
0.1.1 | 2018 年 2 月 5 日 |
---|---|
0.1.0 | 2015 年 3 月 25 日 |
#259 在 模拟器 中
12KB
133 行
mindjuice
Mindjuice 是一个简单易用的 Rust brainfuck 解释器。
文档可在 mindjuice 文档 中找到。
lib.rs
:
mindjuice
Mindjuice 是一个简单易用的 brainfuck 解释器!
用法
Mindjuice 以两个阶段解析并运行 brainfuck 程序。首先,它将输入字符串转换为 Vec<Instruction>
,然后它可以运行该指令向量以生成输出。
您可以将任何实现 Iterator<char>
的内容传递给解析函数。
例如,解析和执行静态字符串
extern crate mindjuice;
use std::io;
// parse_instructions will return Err() if there are any unmatched left or right brackets.
// Because we know this program doesn't have any unmatched brackets, using `.unwrap()` is fine.
let instructions = mindjuice::parse_instructions("++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.".chars()).unwrap();
let mut buffer = Vec::new();
// Execute the instructions!
mindjuice::execute_brainfuck(instructions, // Instructions vec
&mut buffer, // io::Write to send output to
io::empty(), // io::Read to get input from
30000000u64 // Maximum program iterations to run before returning
).unwrap();
assert_eq!(&buffer[..], b"Hello World!\n");
注意:由于 hello world 程序示例没有使用 ,
输入命令,我们可以使用 io::empty()
作为输入。然而,如果我们为使用 ,
的程序提供了 io::empty()
,则 execute_brainfuck()
将无限期地循环等待输入。