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()

最后更新于