我正在用高级语言实现Javascript解释器。我以前没有这样做过,所以我得到了自己的方向......学习分流码算法和类似的基础知识。现在,我正在尝试粗略地执行功能,我想确保我清楚需要存储在内存中的内容。似乎需要记住的事物的数量比人们想象的要小:
- 陈述(这些陈述在内存中应该是什么样的?)
- 调用堆栈,它是一堆打开的上下文。
- 每个上下文包含:1:变量,2:指向父上下文的指针,以及触发调用的语句的副本及其表达式及其当前评估状态。 3:使用 new 调用该函数的指示符。
- 对于闭包,我们在一些封闭的上下文中也有变量。这些是即使它们被关闭也可能仍然需要的上下文,因为仍然有一个指向它们的指针,以在闭合上下文中创建的函数的形式。 (并附上封闭的内容。)
- 当前声明及其当前的评估状态。
- 接下来是什么声明。
这是对的吗?