2个版本

0.1.1 2024年6月16日
0.1.0 2024年6月13日

#114 in 编程语言

MIT 许可证

25KB
549

另一个Brainf**k解释器

用于.bf文件(或为Brainf**k 编程语言编写的任何文件)的Rust编程语言编写的解释器,注重效率

Brainf**k是什么?

esolangs.org

Brainf**k是最著名的图灵完备编程语言之一,并激发了许多其他语言的创造。

Brainf**k在内存单元数组上操作,每个单元最初设置为0。在大多数实现中,数组长度为30,000个单元,但可以使用-m --mem标志进行配置。

有一个指针,最初指向第一个内存单元。有8个命令,><+-.,[](所有其他字符都视为注释),涉及移动指针,操作指针位置的内存单元,从源/汇(stdin/stdout)读取和写入,以及实现类似跳转的行为。

更多信息,请查看https://esolangs.org/wiki/Brainfuck

安装 / 编译

如果您已安装Cargo,要从crates.io安装最新版本,只需运行cargo install aneurysm。如果您想从GitHub安装最新测试版,请运行cargo install --git https://github.com/Oakchris1955/rust-aneurysm.git --branch beta。如果您已安装此包并希望更新到最新版本,请使用带有--force标志的相应命令

用法

A Brainf**k interpreter written in Rust with minimal dependencies

Usage: aneurysm [OPTIONS] [FILENAME]

Arguments:
  [FILENAME]  Brainf**k file to execute [default: main.bf]

Options:
  -m, --mem <memory>  The memory size in bytes/cells to allocate for the program [default: 30000]
  -v, --verbose       Enable verbose logging
  -e, --echo          Whether or not to echo characters written to stdin
  -h, --help          Print help
  -V, --version       Print version

日志记录

当设置了---verbose标志时,详细的日志将被打印到stderr。所有级别为INFO或以上的内容都将打印,或者当程序以调试断言运行时,将打印DEBUG。如果没有设置此标志,默认级别将是WARN。请注意,您可以使用RUST_LOG环境变量在运行时设置日志级别,这将优先于上述设置。

关于CPU和内存使用

此程序基本上遵循DOTADIW(做一件事,做好这件事)原则:换句话说,如果您运行一个永远不会终止的程序,它可能会消耗您的CPU。同样,当您将其内存使用设置为异常数值时,也是如此(尽管在这种情况下,操作系统可能会终止进程,请参阅Linux的情况:内存不足管理)。此程序信任用户,以便它可以遵循DOTADIW。

待办事项

  • WrappingUInt结构体添加泛型,将其重命名为Modular,并将其移动到自己的子模块中
  • modular子模块创建单独的crate
  • 调试器(最好是某种可以与现有调试器一起使用的远程服务器)
  • 编译器?

许可证

MIT

依赖关系

~1.8–9MB
~76K SLoC