[英]Golang compile to binary from AST
是否可以在Golang中將AST編譯為二進制文件? 或者API是否不公開該功能。 庫目前這樣做的方式,如Gisp ,是使用go / printer軟件包打印出AST。 有沒有辦法跳過這個過程並直接將AST編譯成二進制文件?
好吧,gisp非常酷,但使用原始的解析器來創建它是一個技巧:
您可以為compiler / internal / syntax文件夾創建一個本地符號鏈接:
ln -s $GOROOT/src/cmd/compile/internal/syntax
現在你的代碼可以讀取一個文件,並像這樣創建一個ast:
package main
import (
"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 ;-)
不是現在,不。 現在,盡管Go的編譯器是用Go編寫的,但它並沒有在標准庫中公開 。
打印源和使用go build
的Gisp方法可能是您的最佳選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.