1.6 写作目的

该系列文章的主要目的是让读者在源码层面熟悉 Go 编译器的实现,因此会以代码讲解为主。但编译器的实现涉及到非常多的细节处理,本文会尽量避免大段的贴代码来对其进行分析(实际上也是不可行的),而是建议读者将文章当着一个参考,自己动手去源码中进行探索。因此每个主题的文章基本会按照如下结构进行组织:

  1. 该模块的简介,需要涉及到的理论知识复习。例如词法、语法分析中涉及到很多形式语言与自动机的知识,文章都会先尽可能少地温习一下相关知识

  2. 核心数据结构介绍,意在搭建该模块的骨架

  3. 核心逻辑介绍,意在了解该模块实现的主体算法思路

  4. 特殊案例分析,详细分析典型案例的处理流程

编译器前端和语言特性相关,包括词法分析、语法分析、类型检查等;而负责目标代码翻译的编译器后端,很多地方会涉及到具体的硬件体系知识,除非真的是这方面的从业人员,否则没有必要在这上面耗费太多的精力。因此我们将重点关注 Go 语言的编译器前端知识。

作者对编译领域的知识也只是一知半解,学习Golang编译器的目的只是为了提升自己对该语言的理解,以便写出更高质量的CRUD代码。本文也是在学习编译器代码时心血来潮,将笔记稍作整理最终促成几篇拙作,其中难免有疏漏、不当、甚至错误的地方,欢迎批评指正,共同学习进步。

最后更新于