GO语言"go/parser"包中"ParseFile"函数的用法及代码示例。
用法:
func ParseFile(fset *token.FileSet, filename string, src any, mode Mode)(f *ast.File, err error)
ParseFile 解析单个 Go 源文件的源代码,并返回对应的 ast.File 节点。源代码可以通过源文件的文件名提供,也可以通过 src 参数提供。
如果 src != nil,ParseFile 从 src 解析源,文件名仅在记录位置信息时使用。 src 参数的参数类型必须是 string、[]byte 或 io.Reader。如果 src == nil,ParseFile 解析文件名指定的文件。
mode 参数控制解析的源文本的数量和其他可选的解析器函数。如果设置了SkipObjectResolution mode 位,则会跳过解析的对象解析阶段,导致 File.Scope、File.Unresolved 和所有 Ident.Obj 字段为 nil。
位置信息记录在文件集 fset 中,不能为 nil。
如果无法读取源,则返回的 AST 为 nil,错误指示特定失败。如果读取了源代码但发现了语法错误,则结果是部分 AST(带有代表错误源代码片段的 ast.Bad* 节点)。通过按源位置排序的扫描器ErrorList 返回多个错误。
例子:
package main
import (
"fmt"
"go/parser"
"go/token"
)
func main() {
fset := token.NewFileSet() // positions are relative to fset
src := `package foo
import (
"fmt"
"time"
)
func bar() {
fmt.Println(time.Now())
}`
// Parse src but stop after processing the imports.
f, err := parser.ParseFile(fset, "", src, parser.ImportsOnly)
if err != nil {
fmt.Println(err)
return
}
// Print the imports from the file's AST.
for _, s := range f.Imports {
fmt.Println(s.Path.Value)
}
}
输出:
"fmt" "time"
相关用法
- GO ParseFloat用法及代码示例
- GO ParseAddress用法及代码示例
- GO ParseUint用法及代码示例
- GO ParseIP用法及代码示例
- GO ParseMediaType用法及代码示例
- GO ParseInt用法及代码示例
- GO ParseCIDR用法及代码示例
- GO ParseInLocation用法及代码示例
- GO ParseDuration用法及代码示例
- GO Parse用法及代码示例
- GO ParseAddressList用法及代码示例
- GO ParseBool用法及代码示例
- GO ParseQuery用法及代码示例
- GO ParsePKIXPublicKey用法及代码示例
- GO PathUnescape用法及代码示例
- GO PathEscape用法及代码示例
- GO PutUvarint用法及代码示例
- GO PlainAuth用法及代码示例
- GO Print用法及代码示例
- GO Pow10用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 ParseFile。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。