Links

3B.2 代码结构

主体解析逻辑涉及到的代码位置
  • package 位置: $GCROOT/compile/internal/syntax
  • parser.go: 语法解析器主题逻辑
  • nodes.go: AST 数据结构声明
  • syntax.go: 解析入口函数所在文件,入口函数为 Parse()
  • pos.go: 跟踪源文件位置信息的结构体声明
辅助代码
  • dumper.go: 可视化 AST
  • printer.go: 以特定格式打印 AST
从编译器主函数进入语法分析的代码位置如下:
// file: cmd/compile/internal/gc/main.go
func Main(archInit func(*ssagen.ArchInfo)) {
// 忽略前置的编译器初始化代码
// Parse and typecheck input.
noder.LoadPackage(flag.Args())
// 忽略后续代码
}
noder.LoadPackage() 在文件 $GCROOT/compile/internal/noder/noder.go 中, 该函数会调用语法分析的入口函数 syntax.Parse()