#brainfuck #interactive #repl #command #blazingly-fast

bin+lib blazefuck

一个闪电般的快速(交互式)Brainfuck 解释器

1 个稳定版本

1.0.0 2022年5月14日

1020编程语言

MIT 许可证

26KB
416

blazefuck

一个闪电般的快速(交互式)Brainfuck 解释器,用 Rust 编写。

描述

一个小巧高效的 Brainfuck 解释器,具有 REPL 以便于快速在线评估

Brainfuck 是一种简单的神秘语言,具有最小化命令集,你可以在这里了解更多 信息

入门

依赖项

  • 安装适用于您的系统的 rustup 工具链。

安装

  • 将 Cargo 的二进制目录添加到您的路径环境变量中
    rustup 安装程序应该会为您完成此操作,如果没有,它应位于 ~/.cargo/bin(Linux)或 %USERPROFILE\.cargo\bin(Windows)。
  • 只需在终端中运行 cargo install blazefuck 即可安装,它会从 crates.io 安装。

执行程序

  • 在提示符下键入 blazefuck
$ blazefuck
blazefuck 1.0.0 on windows, run with "-h" or "--help" for more information.
Use "cells" to show the cell stack and "exit" to exit the interpreter.
>>> _

然后您可以像以下那样使用正常的 Brainfuck 命令
> 增加数据指针(指向下一个右边的单元)。
< 减少数据指针(指向下一个左边的单元)。
+ 增加数据指针处的字节(加一)。
- 减少数据指针处的字节(减一)。
. 输出数据指针处的字节。
, 接受一个字节的输入,将其值存储在数据指针处的字节中。
[ 如果数据指针处的字节为零,则不会将指令指针向前移动到下一个命令,而是将其跳转到匹配的 ] 命令之后的命令。
] 如果数据指针处的字节非零,则不会将指令指针向前移动到下一个命令,而是将其跳转回匹配的 [ 命令之后的命令。

此外,cellsexit 分别用于显示当前的单元堆栈和退出 REPL。

  • 或者可以使用 blazefuck [FILE] 指定源文件,一些示例可以在 这里 找到。
$ blazefuck hello.bf
Hello World!

$ _
  • 可以按照以下方式指定一些标志
-d, --debug     Shows the cell stack after every command
-s, --strict    Activates strict mode
  • 严格模式与正常模式有一些关键区别,启用它时,某些程序可能无法正常运行。
    • 不允许访问#1和#30000之间的任何单元格,正常模式会绕回到开始或结束。
    • 不允许单元格数据超出0-255的范围,正常模式也会绕回。

从源码构建

  • 克隆此存储库
$ git clone https://github.com/poopsicles/blazefuck
  • 切换到新创建的目录
$ cd ./blazefuck
  • 使用cargo编译
$ cargo build
  • cargo将获取所需的依赖项,并在./target/debug/blazefuck处创建二进制文件

版本历史

  • 1.0
    • 首次发布

许可协议

本项目采用MIT许可协议,更多详情请参阅此处

依赖项

~3MB
~62K SLoC