Go语法树是Go语言源文件的另一种语义等价的表现形式。而Go语言自带的`go fmt`和`go doc`等命令都是在Go语法树的基础之上分析工具。因此将Go语言程序作为输入数据,让我们语法树这个维度重新审视Go语言程序,我们将得到创建Go语言本身的技术。Go语法树由标准库的`go/ast`包定义,它是在`go/token`包定义的词法基础之上抽象的语法树结构。本书简单介绍语法树相关包的使用。如果想从头实现一个玩具Go语言可以参考[《从头实现µGo语言》](https://github.com/chai2010/ugo-compiler-book)。
# 序言
在武侠小说中,天下武功出少林,少林寺的七十二绝技名扬天下。但是真正能学会并能够掌握七十二绝技的屈指可数,主要原因是学习周期太长。以七十二绝技中的一指禅为例,据说五代时期的法慧禅师以三十六年时间掌握的学习速度排名第一,其次是南宋的灵兴禅师花了三十九年时光排名第二,而韦爵爷的澄观师侄以四十二年而练成一指禅名列第三。如果一个绝技真的需要几十或上百年的时间才能掌握,那只能说明这个绝技没有实用价值,或者是学习的人没有掌握科学的学习方法。
其实少林寺的七十二绝技是有科学高效的学习方法的,这个方法由《天龙八部》中的鸠摩智发明并实践。鸠摩智国师经过科学研究发现少林寺的七十二绝技招式虽然厉害,但是其内部的驱动引擎性能极其底下(预热就需要几十年时间),而稍微强一点的易筋经引擎又涉及知识产权问题不对外开放授权,因此如何为七十二绝技定制一个合适的内功驱动引擎就成了一个关键问题。经过不懈努力,鸠摩智大师终于发现可以将逍遥派的小无相功作为驱动七十二绝技的内功引擎,从而开辟了一条武学弯道超车的新捷径。
在软件开发领域同样存在几个圣地:数据库、操作系统和编译器。其中编译器的开发技术更是