#brainfuck #proc-macro #transpiler #brainfuck-compiler #brain-fuck-to-rust

bflib

使用Rust过程宏编写的BrainFuck到Rust的转换器

9个版本

0.1.9 2023年10月31日
0.1.8 2023年10月31日

#209过程宏

每月 49 次下载

MIT 许可协议

13KB

使用Rust过程宏的BrainFuck编译器

更确切地说,是使用Rust过程宏编写的BrainFuck到Rust的转换器

Crates.io License: MIT docs.rs

示例

  1. Hello World(在丢弃时运行)
    brain_fuck!(
        ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.
        >---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
    );
    
  2. 使用 into 方法在运行后获取 (pc: usize, mem: Vec<u8>) (在调用 into 后运行)
    let (pc, mem) = brain_fuck!(
        ++++++++[>+>++++<<-]>++>>+<[-[>>+<<-]+>>]>+[
            -<<<[
                ->[+[-]+>++>>>-<<]<[<]>>++++++[<<+++++>>-]+<<++.[-]<<
            ]>.>+[>>]>+
        ]
    ).into();
    println!("{:?}", (pc, mem));
    
  3. 使用 env 方法设置Brainfuck代码块的 程序计数器 pc内存 mem (在丢弃时运行)
    brain_fuck!(
        [.>]
    ).env(0, vec![79, 75, 10]);
    
  4. 总共(在调用 into 后运行)
    let (pc, mem) = brain_fuck!(
        [.>]
    ).env(0, vec![72, 101, 108, 108, 79, 119, 104, 97, 116, 65, 115, 10]).into();
    println!("{:?}", (pc, mem));
    

依赖关系

~1.5MB
~35K SLoC