這個問題解決了使用 go/parser 套件將 Go 原始檔轉換為合適的語法樹表示的挑戰。然而,從語法樹產生 Go 原始碼仍然是一個未解決的問題。
go/printer 套件提供了這個問題的解決方案。它允許將抽象語法樹 (AST) 轉換回原始程式碼。
考慮以下程式碼範例:
<code class="go">package main import ( "go/parser" "go/printer" "go/token" "os" ) func main() { // Input source code src := ` package main func main() { println("Hello, World!") } ` // Parse the source code into an AST fset := token.NewFileSet() f, err := parser.ParseFile(fset, "", src, 0) if err != nil { panic(err) } // Print the AST as source code printer.Fprint(os.Stdout, fset, f) }</code>
執行時,此程式碼片段會讀取來源字串,將其解析為AST,然後將 AST 作為 Go 原始程式碼列印回來。結果就是原始輸入原始碼。
以上是如何將 Go AST 轉換回原始碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!