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 页面,它解释了该语言的规则,并提供了示例。