#plugin #esolang #brainfuck #native #macro #bf #procedural

nightly brainfuck_macros

一个编译器插件,将Brainfuck代码在编译时转换为Rust,让您的BF程序能够通过LLVM优化为超快的本地代码

6个版本

使用旧的Rust 2015

0.1.5 2015年1月30日
0.1.4 2015年1月24日
0.1.2 2014年12月13日
0.1.1 2014年11月14日

#1073 in 编程语言

MIT/Apache

9KB
146

Build Status

一个简单的过程宏,将Brainfuck程序转换为本地代码。

示例

#![feature(phase)]

#[phase(plugin)] extern crate brainfuck_macros;

use std::io;

fn main() {
    let hello_world = brainfuck!{
        ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>
        ---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
    };

    hello_world(&mut io::stdin(), &mut io::stdout()).unwrap();
}

查看 tests/examples/ 中的基本示例以及 bf_bf_interpreter 子包中的 Brainfuck解释器(用Brainfuck编写的)

这是 Cargo启用 的,因此可以通过在 Cargo.toml 中添加指向此 Git 仓库的 [dependencies.brainfuck_macros] 部分来使用它。如果您还想使用 bf_bf_interpreter,只需添加指向此仓库的 [dependencies.bf_bf_interpreter] 部分即可。

规格

正常的Brainfuck,具有

  • 30000的带长度,
  • 存储无符号字节(带回绕)的单元格,
  • 通过返回-1表示EOF,并且
  • 忽略超出范围的索引步长(即指向第一个单元格时的 < 被忽略,同样对于指向最后一个单元格的 >)。

无运行时依赖