控制结构

本章介绍控制结构,最明显的变化是自此虚拟机不再只有顺序执行,而出现了跳转。并且由于语法分析时递归调用语法块block的解析,需要处理局部变量作用域,使得block的含义和界限更加清晰。

Lua语言中的几种控制结构很平常,跟其他语言类似,没什么特别之处。接下来第一节首先介绍最简单的if语句的if分支,引入条件跳转和block的处理。然后依次介绍其他控制结构,大部分都是通过条件跳转(Test字节码)和无条件跳转(Jump字节码)来实现。只有数值型for语句由于语义比较复杂,所以为了性能考虑而使用2个专门的字节码。泛型for语句需要用到函数,所以在后续章节引入函数后再介绍。

另外,这一章还讨论并尝试引入了Lua中不存在的continue语句,并保证向后兼容。

再另外,虽然本章从功能上完整地实现了各个控制结构,但在下一章介绍了关系运算和逻辑运算后,会优化这里的实现。