亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
archive archive/tar archive/zip bufio bufio(緩存) builtin builtin(內(nèi)置包) bytes bytes(包字節(jié)) compress compress/bzip2(壓縮/bzip2) compress/flate(壓縮/flate) compress/gzip(壓縮/gzip) compress/lzw(壓縮/lzw) compress/zlib(壓縮/zlib) container container/heap(容器數(shù)據(jù)結(jié)構(gòu)heap) container/list(容器數(shù)據(jù)結(jié)構(gòu)list) container/ring(容器數(shù)據(jù)結(jié)構(gòu)ring) context context(上下文) crypto crypto(加密) crypto/aes(加密/aes) crypto/cipher(加密/cipher) crypto/des(加密/des) crypto/dsa(加密/dsa) crypto/ecdsa(加密/ecdsa) crypto/elliptic(加密/elliptic) crypto/hmac(加密/hmac) crypto/md5(加密/md5) crypto/rand(加密/rand) crypto/rc4(加密/rc4) crypto/rsa(加密/rsa) crypto/sha1(加密/sha1) crypto/sha256(加密/sha256) crypto/sha512(加密/sha512) crypto/subtle(加密/subtle) crypto/tls(加密/tls) crypto/x509(加密/x509) crypto/x509/pkix(加密/x509/pkix) database database/sql(數(shù)據(jù)庫(kù)/sql) database/sql/driver(數(shù)據(jù)庫(kù)/sql/driver) debug debug/dwarf(調(diào)試/dwarf) debug/elf(調(diào)試/elf) debug/gosym(調(diào)試/gosym) debug/macho(調(diào)試/macho) debug/pe(調(diào)試/pe) debug/plan9obj(調(diào)試/plan9obj) encoding encoding(編碼) encoding/ascii85(編碼/ascii85) encoding/asn1(編碼/asn1) encoding/base32(編碼/base32) encoding/base64(編碼/base64) encoding/binary(編碼/binary) encoding/csv(編碼/csv) encoding/gob(編碼/gob) encoding/hex(編碼/hex) encoding/json(編碼/json) encoding/pem(編碼/pem) encoding/xml(編碼/xml) errors errors(錯(cuò)誤) expvar expvar flag flag(命令行參數(shù)解析flag包) fmt fmt go go/ast(抽象語(yǔ)法樹) go/build go/constant(常量) go/doc(文檔) go/format(格式) go/importer go/parser go/printer go/scanner(掃描儀) go/token(令牌) go/types(類型) hash hash(散列) hash/adler32 hash/crc32 hash/crc64 hash/fnv html html html/template(模板) image image(圖像) image/color(顏色) image/color/palette(調(diào)色板) image/draw(繪圖) image/gif image/jpeg image/png index index/suffixarray io io io/ioutil log log log/syslog(日志系統(tǒng)) math math math/big math/big math/bits math/bits math/cmplx math/cmplx math/rand math/rand mime mime mime/multipart(多部分) mime/quotedprintable net net net/http net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/pprof net/mail net/mail net/rpc net/rpc net/rpc/jsonrpc net/smtp net/smtp net/textproto net/textproto net/url net/url os os os/exec os/signal os/user path path path/filepath(文件路徑) plugin plugin(插件) reflect reflect(反射) regexp regexp(正則表達(dá)式) regexp/syntax runtime runtime(運(yùn)行時(shí)) runtime/debug(調(diào)試) runtime/internal/sys runtime/pprof runtime/race(競(jìng)爭(zhēng)) runtime/trace(執(zhí)行追蹤器) sort sort(排序算法) strconv strconv(轉(zhuǎn)換) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系統(tǒng)調(diào)用) testing testing(測(cè)試) testing/iotest testing/quick text text/scanner(掃描文本) text/tabwriter text/template(定義模板) text/template/parse time time(時(shí)間戳) unicode unicode unicode/utf16 unicode/utf8 unsafe unsafe
characters

  • import "go/parser"

  • Overview

  • Index

  • Examples

概觀

Package parser為Go源文件實(shí)現(xiàn)解析器。輸入可以以各種形式提供(參見(jiàn)各種Parse *函數(shù)); 輸出是表示Go源的抽象語(yǔ)法樹(AST)。解析器是通過(guò)一個(gè)Parse *函數(shù)調(diào)用的。

解析器接受比Go規(guī)范在語(yǔ)法上允許的語(yǔ)言更大的語(yǔ)言,以簡(jiǎn)化語(yǔ)法錯(cuò)誤,并提高語(yǔ)法錯(cuò)誤的健壯性。例如,在方法聲明中,接收器被看作是一個(gè)普通的參數(shù)列表,因此可能包含多個(gè)條目,其中規(guī)范只允許一個(gè)。因此,AST(ast.FuncDecl.Recv)字段中的對(duì)應(yīng)字段不限于一個(gè)條目。

索引

  • func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error)

  • func ParseExpr(x string) (ast.Expr, error)

  • func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (ast.Expr, error)

  • func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) (f *ast.File, err error)

  • type Mode

例子

ParseFile

包文件

interface.go parser.go

func ParseDir

func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error)

ParseDir針對(duì)path指定的目錄中名稱以“.go”結(jié)尾的所有文件調(diào)用ParseFile,并返回包名 - > AST包與所有找到的包。

如果filter!= nil,則只考慮os.FileInfo條目通過(guò)過(guò)濾器(以“.go”結(jié)尾)的文件。模式位不變地傳遞給ParseFile。位置信息記錄在fset中,不能為零。

如果無(wú)法讀取目錄,則返回零映射和相應(yīng)的錯(cuò)誤。如果發(fā)生分析錯(cuò)誤,則返回一個(gè)非零但不完整的映射和遇到的第一個(gè)錯(cuò)誤。

func ParseExpr

func ParseExpr(x string) (ast.Expr, error)

ParseExpr是獲取表達(dá)式x的AST的便捷函數(shù)。記錄在AST中的位置信息是未定義的。錯(cuò)誤消息中使用的文件名是空字符串。

func ParseExprFrom

func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (ast.Expr, error)

ParseExprFrom是一個(gè)用于解析表達(dá)式的便捷函數(shù)。參數(shù)的含義與ParseFile相同,但源必須是有效的Go(類型或值)表達(dá)式。具體而言,fset不能為零。

func ParseFile

func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) (f *ast.File, err error)

ParseFile解析單個(gè)Go源文件的源代碼并返回相應(yīng)的ast.File節(jié)點(diǎn)。源代碼可以通過(guò)源文件的文件名或通過(guò)src參數(shù)提供。

如果src!= nil,ParseFile解析來(lái)自src的源文件并且文件名僅在記錄位置信息時(shí)使用。src參數(shù)的參數(shù)類型必須是string,[] byte或io.Reader。如果src == nil,ParseFile解析由filename指定的文件。

mode參數(shù)控制解析的源文本的數(shù)量和其他可選的解析器功能。位置信息記錄在文件集fset中,該文件集不能為零。

如果源無(wú)法讀取,則返回的AST為零,并且錯(cuò)誤指示特定故障。如果源被讀取但發(fā)現(xiàn)語(yǔ)法錯(cuò)誤,則結(jié)果是部分AST(ast.Bad *節(jié)點(diǎn)代表錯(cuò)誤源代碼的片段)。多個(gè)錯(cuò)誤通過(guò)一個(gè)scanner.ErrorList按文件位置排序返回。

例子

package mainimport ("fmt""go/parser""go/token")func main() {
	fset := token.NewFileSet() // positions are relative to fset

	src := `package foo

import (
	"fmt"
	"time"
)

func bar() {
	fmt.Println(time.Now())
}`// Parse src but stop after processing the imports.
	f, err := parser.ParseFile(fset, "", src, parser.ImportsOnly)if err != nil {
		fmt.Println(err)return}// Print the imports from the file's AST.for _, s := range f.Imports {
		fmt.Println(s.Path.Value)}}

type Mode

Mode值是一組標(biāo)志(或0)。它們控制解析的源代碼量和其他可選的解析器功能。

type Mode uint
const (
        PackageClauseOnly Mode             = 1 << iota // stop parsing after package clause
        ImportsOnly                                    // stop parsing after import declarations
        ParseComments                                  // parse comments and add them to AST
        Trace                                          // print a trace of parsed productions
        DeclarationErrors                              // report declaration errors
        SpuriousErrors                                 // same as AllErrors, for backward-compatibility
        AllErrors         = SpuriousErrors             // report all errors (not just the first 10 on different lines))
Previous article: Next article: