命令行覆盖刷新输出的效果如下图。
虚拟机是由软件实现的计算机。
前期准备
之前想写一篇《栈实现的表达式求值》,鸽了。这段时间又在学习编译原理,也有了一些想法,恰好看见Data Structure - Expression Parsing,如获至宝,感觉有点意思。
在需要恢复控制权的位置设置一系列 label:一个位于开始位置,另一个在每个 return 语句后面。我们还设置了一个 state 变量,用于在多次函数调用时告诉我们下次应该在哪里恢复控制权。在每次返回前,都需要更新 state 变量,使其指向正确的 label。而在调用后,我们都会通过 switch 对 state 进行判断,以便找到下一次要跳转的 label。