5个版本

使用旧的Rust 2015

0.2.2 2017年8月24日
0.2.1 2017年8月24日
0.2.0 2017年8月24日
0.1.1 2017年8月24日
0.1.0 2017年8月23日

#592 in 机器学习

LGPL-3.0

17KB
225

rust-bfi

Build Status

简单快速,非常适合机器学习需求的Brainfuck解释器。

示例

extern crate bfi;

use bfi::{BfMachine, b};

let code = b("+++[->,.<]");  // `b` converts an `&str` to a byte vector: `pub fn b(s: &str) -> Vec<u8>`
let input = b("jackdaws love my big sphinx of quartz");
let mut output = Vec::new();

let mut machine = BfMachine::new();
let res = machine.exec(&code, &input, &mut output);

assert_eq!(output, b("jackdaws"));
assert_eq!(res, Ok(code.len()));

文档

这里有。

实现细节

  • 内存带无限长向右延伸。
  • 向起始单元的左侧移动会导致 Err(BfError::Memory)
  • 单元可以存储从0到255的值。
  • 加法和减法会静默地溢出和下溢。
  • 输入结束会导致提前返回。

为什么还需要另一个Brainfuck解释器?

我喜欢将Brainfuck作为强化学习环境的思想。在搜索crates之后,我没有找到任何运行时解释BF的优质方案,所以我写了这个小玩意儿。

无运行时依赖