我正在寻找一种生成Go源代码的方法。我发现 go/parser 可以从 Go 源文件生成 AST,但找不到从 AST 生成 Go 源的方法。
1 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
要将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!")
}
- 1 回答
- 0 关注
- 253 浏览
添加回答
举报
0/150
提交
取消