我正在编写一种基于堆栈操作的笑话语言。我试图找到使其图灵完备所需的最少指令量,但不知道基于一个堆栈的语言是否甚至可以图灵完备。这些说明就足够了吗?
IF (top of stack is non-zero)
WHILE (top of stack is non-zero)
PUSH [n-bit integer (where n is a natural number)]
POP
SWAP (top two values)
DUPLICATE (top value)
PLUS (adds top two values, pops them, and pushes result)
我已经查看了几个问题和答案(例如这个和这个),并相信上述说明就足够了。我对么?还是我需要其他的东西,比如函数调用、变量或另一个堆栈?
如果这些说明足够,它们中的任何一个都是多余的吗?
编辑:通过添加
ROTATE
命令(将堆栈的前三个值从A B C
更改为B C A
)并消除DUPLICATE
、PLUS
和SWAP
命令,可以实现规则 110 元胞自动机的 3 字符版本。这足以证明图灵完备吗?
如果有一个没有变量或函数的图灵完备的单栈语言的例子,那就太好了。