![]() |
1
3
这将创建一个正好包含两个元素的树
事实上,您多次看到同一个节点只是因为您多次访问树的同一部分。对于您的用例来说,这是一件非常正常的事情,但是在您的用例中,这会导致一个问题,因为您在对象中存储了可变数据,假设您得到了一个新的
这不是解析树的工作方式(它们表示源代码的结构,而不是运行时可能发生的调用序列),因此您不能使用
相反,您应该将可变状态放入访问者对象中。对于您的特定问题,这意味着有一个包含每个运行时函数调用的局部变量的调用堆栈。每次函数开始执行时,都可以将一个帧推送到堆栈上,每次函数退出时,都可以将其弹出。这样,堆栈顶部将始终包含当前正在执行的函数的局部变量。
PS:这与你的问题无关,但算术表达式中通常的优先规则是,
要解决这个问题
|
![]() |
Tor · 使用Box<None>值初始化struct 2 年前 |
![]() |
Judy · 在两个JavaScript函数中更新全局变量 2 年前 |
![]() |
ask_me · Python中关于局部和全局范围的概念性问题 2 年前 |
![]() |
Astha Gupta · 闭包中的词汇作用域是如何发生的?[重复] 3 年前 |
![]() |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 6 年前 |
![]() |
pag-r · Golang开关变量范围 6 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 6 年前 |