# 3B.2 代码结构

主体解析逻辑涉及到的代码位置

* package 位置: $GCROOT/compile/internal/syntax
* parser.go: 语法解析器主题逻辑
* nodes.go: AST 数据结构声明
* syntax.go: 解析入口函数所在文件，入口函数为 `Parse()`
* pos.go: 跟踪源文件位置信息的结构体声明

辅助代码

* dumper.go: 可视化 AST
* printer.go: 以特定格式打印 AST

从编译器主函数进入语法分析的代码位置如下：

```go
// 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()`
