#brainfuck #interpreter #mind #brain #juice

mindjuice

一个简单易用的 brainfuck 解释器

2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 2 月 5 日
0.1.0 2015 年 3 月 25 日

#259模拟器

MIT/Apache

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() 将无限期地循环等待输入。

无运行时依赖