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 机器学习
17KB
225 行
rust-bfi
简单快速,非常适合机器学习需求的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的优质方案,所以我写了这个小玩意儿。