一个过度不严谨又略显设计不足的 Brainfuck 解释器,使用 Swift 编写
BrainflipKit 是一个使用 Swift 编写的命令行应用,用于解释 Brainfuck 程序。
如果你来到这里,那么很有可能你已经知道 Brainfuck 是什么了(如果不是,这里有一个快速而简陋的参考)。所以,与其纠缠于基础知识,我将介绍是什么让这个解释器略微独特。
- 完全 Unicode 支持。这得益于使用了 Swift 语言。
- 由于上述的 Unicode 支持,单元格是 32 位的,而不是 8 位的。大多数编写良好的 Brainfuck 程序不应该受到这个影响。
- 内存带在两个方向上都是无限的。
- 输入结束(EOI)行为是可自定义的 —— 你可以忽略 EOI,将单元格设置为 0,将单元格设置为其最大值,或者抛出一个错误。(我不知道你为什么要对 EOI 抛出错误,但这个选项是可用的。)
- 单元格回绕可以被禁用(通过抛出错误)。
- 执行了一些相对基础的优化,包括
- 精简重复指令
- 合并
+
/-
和 <
/>
指令(并移除互相抵消的指令对)
- 用直接清除单元格的指令替换
[-]
- 用专用指令替换复制循环和乘法循环
- 用专用指令替换扫描循环(
[>]
、[<<<]
等)
- 还有一些额外的指令,如果你愿意,可以启用这些指令。