當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


GO ParseFile用法及代碼示例

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"

相關用法


注:本文由純淨天空篩選整理自golang.google.cn大神的英文原創作品 ParseFile。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。