2.2 Go 程序编译流程
2.2.1 第一阶段:词法和语法分析
-
cmd/compile/internal/syntax
(词法分析器,解析器,语法树)
在编译的第一阶段,源代码被 token 化(词法分析),解析(语法分析),并为每个源构造语法树文件。每个语法树都是相应源文件的精确表示对应于源的各种元素的节点,如表达式,声明和陈述。语法树还包括位置信息用于错误报告和调试信息的创建。
main -> gc.Main -> amd64.Init -> amd64.LinkArch.Init
-> typecheck -> typecheck -> saveerrors -> typecheckslice
-> checkreturn -> checkMapKeys -> capturevars ->
typecheckinl -> inlcalls -> escapes ->
newNowritebarrierrecChecker -> transformclosure