interpreter - 解释器如何切换范围?

标签 interpreter conceptual

我问这个问题是因为我对解释器开发还比较陌生,我想在重新发明轮子之前了解一些基本概念。

我想到了存储在数组中的所有变量的值,该数组构成当前作用域,在进入函数时,数组将被交换,并将原始数组放入某种堆栈中。当离开函数时,“范围堆栈”的顶部元素将被弹出并再次使用。

  • 这基本上是正确的吗?
  • 交换数组(这意味着移动大量数据)不是很慢,因此不被现代解释器使用吗?

最佳答案

为什么要交换数组?只需查看堆栈顶部的数组即可。此外,在大多数语言中,当您想要交换数组时,不必复制数组,只需交换引用或指针即可。

这也是解释器可能会做的事情。另一种方法是为当前作用域建立一个特殊的数据结构,它显式地保存对其父框架的引用。

关于interpreter - 解释器如何切换范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905708/

相关文章:

parsing - 动态 (?) 解析器

c++ - 如何在 mac 上编写 C++ 程序,在单独的文本文件中编译和运行 C++ 代码

c# - Task.Start/Wait 和 Async/Await 之间有什么区别?

c++ - 为什么我必须向 poco 的某些方法提供指针而不是 SharedPtr

c++ - 为什么我不能通过别名来定义前向声明的类?

java - 我们是否应该始终定义接口(interface)和抽象类,即使只有 1 个类扩展它们?

java - 用java编写的java解释器

python - 如果使用颜色提示,如何修复 Python readline 中的列计算

perl - 是否有用于向 Selenium 发送命令的解释器?

javascript - meteor : best practice for modifying Mongo query result before template takes it?