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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。