yrizos / brainfart
一个过度设计的 Brainfuck 解释器。
0.2.0
2019-06-01 23:50 UTC
Requires
- php: >=7.2
- symfony/console: ^4.3
Requires (Dev)
- phpstan/phpstan: ^0.11
- phpunit/phpunit: ^8.1
- symplify/easy-coding-standard: ^6.0
This package is auto-updated.
Last update: 2024-08-23 23:34:27 UTC
README
Brainfart 是用 PHP 编写的 Brainfuck 解释器。
试试看
./bin/brainfart ./tests/scripts/sort.bf "100 5 99 200"
语法
内存操作
>
将内存指针向右移动。<
将内存指针向左移动。+
将内存指针处的字节值加一。-
将内存指针处的字节值减一。
输入/输出操作
.
输出内存指针处的字节。,
接受一个字节输入并将其存储在内存指针处。
循环
[
如果内存指针处的字节为零,则跳转到匹配的 ]
之后的命令。
命名序列
:<alpha><brainfuck>;
将 <alpha>
的出现替换为 <brainfuck>
。
mf5mf5[>mf5++>mf5mf5>+++>+<<<<-]>++.>+.mf5++..+++.>++.<<mf5mf5mf5.>.+++.mb3mb3.mb3mb3--.>+.>.:mf5+++++;:mb3---;
输出结果:Hello World!\n
(希望如此)
解释器指令
!!
将输入与命令分开。如果存在,则将其余部分解释为逗号分隔的输入。
5,10,15,20!!>>,[>>,]<<[[-<+<]>[>[>>]<[.[-]<[[>>+<<-]<]>>]>]<<]
@@
将关闭窥视孔优化。这可能或可能不会影响性能。
$$
将强制输出字符串,而不是默认的数组。
其他
~
睡眠的时间与内存指针处的字节值相同。这肯定会降低性能。
设计
窥视孔优化
连续的类似内存指针命令将被分组。 +++++
将被解释为一个命令,该命令将内存指针处的字节值增加五。
这可能或可能不会提高性能。
错误
可能有很多错误。它们都是故意的,使 Brainfart 的编码更具挑战性和趣味性。 </lie>