刷完 Crafting Interpreters 第 8 章,Statements and State。 这一章内容较多。增加了对语句的支持,包括表达式语句、print 语句、变量声明语句。同时增加了赋值表达式,并且支持了作用域。 实现作用域时使用的 Environment,与 Peter Novig 的 [(How to Write a (Lisp) Interpreter (in Python))](https://www.norvig.com/lispy.html) 经典文章里的,是同一思路。 最后讨论了一下变量声明是显式好,还是隐式好。结论是,显式更好。 Lox 相比真正编程语言,还缺少控制结构(if、while 等)、函数。这是接下来两章的内容。 现在的代码量只有 1059 行(不含注释和空行),已经做到这个程度,太神奇了。 随着内容的增加,感觉定义好 grammar 规则非常重要。事先要做好推演。 不然的话,越往后越容易出现问题。