11 嵌套过程调用 | 《Let’s Build A Simple Interpreter》笔记
本系列是《Let’s Build A Simple Interpreter》的阅读笔记。
在当前的代码实现中,过程对应的嵌套层级被写死成了 2,对于嵌套过程调用并不适配,需要做出修改。
首先需要为符号增加表示作用域层级的成员:
1  | class Symbol:  | 
然后当符号被添加到符号表时为其记录作用域层级:
1  | class ScopedSymbolTable:  | 
这样,当在 visit_ProcedureCall 方法中为过程调用创建活动记录时,就可以访问过程符号的作用域层级。剩下要做的就是使用过程符号的作用域层级作为 nesting_level 参数的值:
1  | class Interpreter(NodeVisitor):  | 
11 嵌套过程调用 | 《Let’s Build A Simple Interpreter》笔记