本篇內(nèi)容主要講解“如何查看go語法樹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“如何查看go語法樹”吧!
創(chuàng)新互聯(lián)專注于可克達拉網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供可克達拉營銷型網(wǎng)站建設(shè),可克達拉網(wǎng)站制作、可克達拉網(wǎng)頁設(shè)計、可克達拉網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造可克達拉網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供可克達拉網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
我們知道,golang 的源碼經(jīng)過詞法分析和語法分析后,可以得到抽象語法樹ast,用戶可以遍歷抽象語法樹實現(xiàn)源碼層面的修改。 golang工具集很多都是在語法樹的基礎(chǔ)上進行的比如go fmt、goimport、go vet等等。
不太熟悉golang或者不太熟悉語法樹的同學(xué)來說,一顆語法樹包含哪些東西?語法樹的結(jié)構(gòu)是什么樣子?源代碼的每一部分如何與語法樹相對應(yīng),是大家疑問比較密集的地方。于是乎,筆者造了個輪子,可視化的方式展示語法樹,一鍵運行直接在瀏覽器打開生成的svg格式圖片。顏色區(qū)分比較重要的語法結(jié)構(gòu)。并且提供圖利。
例子:
比如我們要分析下面源碼
package main
import (
"fmt"
"github.com/xiazemin/golang/ast/ast_graph/exp/multi"
)
func main() {
a:=1
b:=2
fmt.Println(a+b,add(a,b),multi.Multi(a,b),devide(a,b))
}
func devide(i,j int)int {
return i/j
}
我們可以這么做
package main
import "github.com/xiazemin/golang/ast/ast_graph/gen"
func main() {
path := "/Users/didi/goLang/src/github.com/xiazemin/golang/ast/ast_graph/exp/main.go"
dpath := "/Users/didi/goLang/src/github.com/xiazemin/golang/ast/ast_graph/"
gen.GenSvg(path, dpath, "tree")
}
其中path是我們的源碼路徑,dpath是生成圖片路徑
到此,相信大家對“如何查看go語法樹”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!