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》笔记