Golang — Paser .go File With AST

--

正在研究一些有關於 generater Code 的用法
快速產生一些基礎的程式碼架構

主要是由 parser 這個 package 去產生 Node 的結構
Node 會包含所有在 .go 裡面的 parser 到的程式碼

會按照 28 行的 ast.Walk 去走訪每一個 Node
每個 Node 如下圖所示 一開始會是 File 的節點
依次往下探訪

因為我這邊主要需要 Generator 需要使用到 File, StructType 跟 FieldList
所以接下來我只會查詢這兩種 Type.

這邊會去修改 32 行的 visitor.Visit(n ast.Node) ast.Vistor

Struct Name 是放在 File.Scope.Objects
Fileds 是放在 StructType.Fields.List
透過這兩個地方 可以得到 sturct 裡面的欄位以及 struct name

如何將 AAA 裡面的 ID 產生關聯
Node.Pos() 會得到 目前這個 Object 在 byte 裡面的位置
透過這個位置到下一個空白 就是視為自己的 Field 的開始
所以 AAA.Pos() +2 = ID.Pos()
這邊就能去識別為同一組結構體 ( 前提是 .go file 有 format 過

目前就是我學習到的部分
如果有錯麻煩再告知我 謝謝

reference: https://studygolang.com/articles/12403

--

--