Goのソースコードを生成する方法を探しています。
Go / parserを見つけてGoソースファイルからASTを生成しましたが、ASTからGoソースを生成する方法を見つけることができませんでした。
Goのソースコードを生成する方法を探しています。
Go / parserを見つけてGoソースファイルからASTを生成しましたが、ASTからGoソースを生成する方法を見つけることができませんでした。
ASTをソースフォームに変換するには、go/printerパッケージを使用できます。
例(別の例の適応形式)
package main
import (
"go/parser"
"go/printer"
"go/token"
"os"
)
func main() {
// src is the input for which we want to print the AST.
src := `
package main
func main() {
println("Hello, World!")
}
`
// Create the AST by parsing src.
fset := token.NewFileSet() // positions are relative to fset
f, err := parser.ParseFile(fset, "", src, 0)
if err != nil {
panic(err)
}
printer.Fprint(os.Stdout, fset, f)
}
(ここにも)
出力:
package main
func main() {
println("Hello, World!")
}