0

为了对过程的运行时语义进行建模,众所周知,通常需要堆栈。1. 如果语言不允许过程递归,我们必须要有栈吗?2. 如果语言确实允许过程递归,但递归调用只能在过程结束时发生,我们是否必须有堆栈?

4

1 回答 1

0
  1. 不会。但是,如果语言是图灵完整的,您可以根据需要模拟一种。例如。Brainf**k 没有堆栈,我用它制作了一个支持过程和宏的LISP1 解释器。

  2. 这取决于。传统上,您需要一种方法来拥有多个嵌套参数,这就是定义的堆栈。如果您的程序没有参数并且只能在其代码末尾调用其他内容,这几乎就像程序提供的价值比 goto 少。但是,如果您的意思是 tail 而不是 end 那么它就像没有参数的 goto 一样好。

于 2013-10-14T20:11:29.467 回答