parser包的作用是将go源文件 转换为 抽象语法树(AST)
FUNC
// ParseDir 对指定path下以".go"结尾的文件做ParseFile操作
// filter 过滤".go"文件,只用返回true 时才会被考虑
func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, mode Mode)
(pkgs map[string]*ast.Package, first error)
// ParseExpr是一个方便的函数,用于获取表达式x的AST
func ParseExpr(x string) (ast.Expr, error)
// ParseFile解析单个Go源文件的源代码,并返回相应的ast.File节点。
// 源代码可以通过源文件的文件名或src参数提供。
// 如果src为nil,才会去读filename
func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode)
(f *ast.File, err error)
type Mode
控制解析行为
const (
PackageClauseOnly Mode = 1 << iota // stop parsing after package clause
ImportsOnly // stop parsing after import declarations
ParseComments // parse comments and add them to AST
Trace // print a trace of parsed productions
DeclarationErrors // report declaration errors
SpuriousErrors // same as AllErrors, for backward-compatibility
AllErrors = SpuriousErrors // report all errors (not just the first 10 on different lines)
)