igorw / chicken
用PHP编写的Chicken VM。
dev-master
2013-12-14 16:01 UTC
Requires
- nikic/iter: dev-master
- psr/log: ~1.0
Requires (Dev)
- docopt/docopt: dev-master
- monolog/monolog: ~1.6
- phpunit/phpunit: ~3.7
This package is not auto-updated.
Last update: 2024-09-09 14:05:14 UTC
README
PHP实现的Chicken VM,从JavaScript移植而来。
什么是Chicken?它是一种基于单个符号的语言:chicken
。实际上,有几个令牌:chicken
、空格和换行符。一行中的chicken数量对应一个操作码。
这大致翻译成一种汇编语言。支持的运算有chicken
(字符串)、+
、-
、*
、==
、加载、存储、跳转、字符和文字数字。
内存模型有指向栈本身的指针和作为栈的前两个元素的输入。随后是操作码,由0分隔。操作码运行到0为止,此时返回栈顶。每个操作消耗一个或多个元素,然后将其结果推入栈中。
引用实现是用JavaScript编写的,是一件艺术品。
用法
chicken
低级chicken解释器。
Quine
$ echo chicken | bin/chicken
Cat
$ echo chicken | bin/chicken foo <<EOF
chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken
EOF
要启用指令和栈的调试日志记录,请传递--debug
选项
$ echo chicken | bin/chicken --debug
eggsemble
Eggsembler。编译成chicken。
打印A
$ (bin/eggsemble | bin/chicken) <<EOF
push 5
push 13
rooster
bbq
axe
EOF
chickenasm
将ChickenASM编译成eggsembly。
打印A
$ (bin/chickenasm | bin/eggsemble | bin/chicken) <<EOF
push 5
push 13
multiply
char
exit
EOF
计数
$ cat examples/count.cha | bin/chickenasm | bin/eggsemble | bin/chicken 3
99 chickens
$ cat examples/99chickens.cha | bin/chickenasm | bin/eggsemble | bin/chicken 9
ChickenASM是chicken汇编的不同方言。此工具允许翻译成eggsembly。