基于堆栈的语言是否具有范围概念?

时间:2009-11-13 04:47:59

标签: scope stack

基于堆栈的语言是否具有范围概念?在我看来,如果在函数执行之前将函数参数放在堆栈上,那么它们就会以非正统的方式执行。

或者,我可能试图强加一种不太适合的抽象。

1 个答案:

答案 0 :(得分:3)

Scope是一个应用于具有命名变量的语言的概念。在纯粹的基于堆栈的语言中,可能没有任何命名变量,因此范围的概念不适用。有用的基于堆栈的语言 do 具有命名变量,并且当然可以包含范围的概念。

作为一个具体的例子,维基百科有关于Forth的以下内容:

  

由这些和类似词语定义的数据对象在范围上是全局的。由其他语言的局部变量提供的函数由Forth中的数据栈提供(尽管Forth也有真正的局部变量)。与其他语言相比,Forth编程风格使用的命名数据对象非常少;通常,此类数据对象用于包含由多个单词或任务使用的数据(在多任务实现中)。