#brainfuck #index #language #computer #esoteric #back #brainiac

bin+lib brainiac_22ccb748d608358e

Brainfuck 奇异计算机语言的实现

1 个不稳定版本

0.1.0 2021年1月28日

#19#esoteric

自定义许可

10KB
122

brainiac_22ccb748d608358e

brainiac_22ccb748d608358e 是使用 Rust 的 macro_rules 实现的 Brainfuck 奇异计算机语言的程序。

命名为 brainiac_22ccb748d608358e 是为了确保如果有其他更合适需求的 crate 需要使用 "brainiac" 这个名字,这个 "fun" crate 不会占用它的位置。

实现

Brainfuck 是一种相对简单的语言。

程序使用一个包含 30,000 个字节的带子初始化,起始索引为 0。

有 8 个可用的命令

  • >: 将带子上的索引增加 1
  • <: 将带子上的索引减少 1
  • +: 将当前带子索引处的值增加 1
  • -: 将当前带子索引处的值减少 1
  • .: 将当前带子索引处的值输出到 stdout
  • ,: 将 stdin 中的 u8 值分配给当前索引处的带子
  • [: 如果带子当前索引处的值是 0,则移动到匹配的 ']' 字符之后的第一个命令
  • ]: 跳转到匹配的 '[' 字符

限制

由于 Rust 在宏中解析标记的方式,存在一些限制

  • >> 必须是 > >
  • -> 必须是 - >
  • << 必须是 < <
  • <- 必须是 < -
  • .. 必须是 . .

这确保了没有符号出现在无效的位置。

使用方法

使用方法只需将包添加到您的 Cargo.toml 清单中并导入 brainfuck 宏即可

use brainiac_22ccb748d608358e::brainfuck;

fn main() {
    brainfuck! { [This does absolutely nothing except make the compiler do extra work.] }
}

特别感谢

感谢 Rust 宏的简易入门指南,它提供了 Rust 宏的简易入门方法,感谢维基百科的 Brainfuck 页面,它解释了该语言的规则,并提供了示例。

无运行时依赖