2个版本
0.1.1 | 2024年6月16日 |
---|---|
0.1.0 | 2024年6月13日 |
#114 in 编程语言
25KB
549 行
另一个Brainf**k解释器
用于.bf
文件(或为Brainf**k 编程语言编写的任何文件)的Rust编程语言编写的解释器,注重效率
Brainf**k是什么?
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 - 调试器(最好是某种可以与现有调试器一起使用的远程服务器)
- 编译器?
许可证
依赖关系
~1.8–9MB
~76K SLoC