从第7章开始引入了抽象语法树,第8章通过扩展抽象语法树引入了单元运算符’+/-‘。第9章扩展pascal语法支持,扩展方法和第8章是一样的,支持begin/end语句,赋值语句,引入全局符号表,存储变量内容。第10章也是语法扩展,支持更多的语法(pragram,var,代码注释)能够识别pascal程序模式,可以算是一个初具功能的解释器了。
第11章介绍引入符号表,基于符号表实现语法检查(变量声明,类型匹配)。使得第九章的全局符号表只用来存储最终结果即可,消除了文中所说的double duty。值得一提的是,语法检查是在解释器对抽象语法树进行解释之前,所以符号表和最终的全局表功能是相互独立的。
第11章给出了一本作者的参考书籍《Let’s Build a Compiler》 by Jack Crenshaw,本章和符号表相关的内容启发自这本书,相关性较强,适合针对Compiler的深入学习。