POPMUISE
好吧,gisp 真的很酷,但是有一个技巧可以使用原始的 go 解析器来创建那个 ast:您可以创建指向编译器/内部/语法文件夹的本地符号链接:ln -s $GOROOT/src/cmd/compile/internal/syntax现在你的代码可以读取一个文件并像这样创建一个 ast:package mainimport ( "fmt" "github.com/me/gocomp/syntax" "os")func main() { filename := "./main.go" errh := syntax.ErrorHandler( func(err error) { fmt.Println(err) }) ast, _ := syntax.ParseFile( filename, errh, nil, 0) f, _ := os.Create("./main.go.ast") defer f.Close() syntax.Fdump(f, ast) //<--this prints out your AST nicely}现在我不知道你如何编译它......但是嘿,至少你有你的 AST ;-)