我问这个问题是因为我对解释器开发还比较陌生,我想在重新发明轮子之前了解一些基本概念。
我想到了存储在数组中的所有变量的值,该数组构成当前作用域,在进入函数时,数组将被交换,并将原始数组放入某种堆栈中。当离开函数时,“范围堆栈”的顶部元素将被弹出并再次使用。
- 这基本上是正确的吗?
- 交换数组(这意味着移动大量数据)不是很慢,因此不被现代解释器使用吗?
最佳答案
为什么要交换数组?只需查看堆栈顶部的数组即可。此外,在大多数语言中,当您想要交换数组时,不必复制数组,只需交换引用或指针即可。
这也是解释器可能会做的事情。另一种方法是为当前作用域建立一个特殊的数据结构,它显式地保存对其父框架的引用。
关于interpreter - 解释器如何切换范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905708/