> For the complete documentation index, see [llms.txt](https://gocompiler.shizhz.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gocompiler.shizhz.me/1.-golang-bian-yi-qi-qian-yan/1.6-xie-zuo-mu-de.md).

# 1.6 写作目的

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

1. 该模块的简介，需要涉及到的理论知识复习。例如词法、语法分析中涉及到很多形式语言与自动机的知识，文章都会先尽可能少地温习一下相关知识
2. 核心数据结构介绍，意在搭建该模块的骨架
3. 核心逻辑介绍，意在了解该模块实现的主体算法思路
4. 特殊案例分析，详细分析典型案例的处理流程

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

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