亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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ù)庫/sql) database/sql/driver(數(shù)據(jù)庫/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(錯誤) expvar expvar flag flag(命令行參數(shù)解析flag包) fmt fmt go go/ast(抽象語法樹) 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)行時) runtime/debug(調(diào)試) runtime/internal/sys runtime/pprof runtime/race(競爭) runtime/trace(執(zhí)行追蹤器) sort sort(排序算法) strconv strconv(轉(zhuǎn)換) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系統(tǒng)調(diào)用) testing testing(測試) testing/iotest testing/quick text text/scanner(掃描文本) text/tabwriter text/template(定義模板) text/template/parse time time(時間戳) unicode unicode unicode/utf16 unicode/utf8 unsafe unsafe
characters

  • import "go/scanner"

  • Overview

  • Index

  • Examples

Overview

Package scanner為Go源文本實(shí)現(xiàn)掃描器。它需要一個[]字節(jié)作為源,然后可以通過重復(fù)調(diào)用Scan方法來進(jìn)行標(biāo)記。

索引

  • func PrintError(w io.Writer, err error)

  • type Error

  • func (e Error) Error() string

  • type ErrorHandler

  • type ErrorList

  • func (p *ErrorList) Add(pos token.Position, msg string)

  • func (p ErrorList) Err() error

  • func (p ErrorList) Error() string

  • func (p ErrorList) Len() int

  • func (p ErrorList) Less(i, j int) bool

  • func (p *ErrorList) RemoveMultiples()

  • func (p *ErrorList) Reset()

  • func (p ErrorList) Sort()

  • func (p ErrorList) Swap(i, j int)

  • type Mode

  • type Scanner

  • func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode)

  • func (s *Scanner) Scan() (pos token.Pos, tok token.Token, lit string)

例子

Scanner.Scan

包文件

errors.go scanner.go

func PrintError

func PrintError(w io.Writer, err error)

PrintError是一個實(shí)用程序函數(shù),如果err參數(shù)是ErrorList,則會向w打印一個錯誤列表,每行一個錯誤。否則,它會打印錯誤字符串。

type Error

在ErrorList中,錯誤由* Error表示。Pos位置(如果有效)指向有問題的令牌的開始,錯誤情況由Msg描述。

type Error struct {
        Pos token.Position
        Msg string}

func (Error) Error

func (e Error) Error() string

Error實(shí)現(xiàn)了錯誤接口。

type ErrorHandler

一個ErrorHandler可以提供給Scanner.Init。如果遇到語法錯誤并且安裝了處理程序,則會使用位置和錯誤消息調(diào)用處理程序。位置指向違規(guī)令牌的開始。

type ErrorHandler func(pos token.Position, msg string)

type ErrorList

ErrorList是*錯誤的列表。ErrorList的零值是一個空的ErrorList,可以使用。

type ErrorList []*Error

func (*ErrorList) Add

func (p *ErrorList) Add(pos token.Position, msg string)

Add添加一個給定位置和錯誤消息的錯誤到一個ErrorList。

func (ErrorList) Err

func (p ErrorList) Err() error

Err返回等同于此錯誤列表的錯誤。如果列表為空,則Err返回nil。

func (ErrorList) Error

func (p ErrorList) Error() string

ErrorList實(shí)現(xiàn)錯誤接口。

func (ErrorList) Len

func (p ErrorList) Len() int

ErrorList實(shí)現(xiàn)排序接口。

func (ErrorList) Less

func (p ErrorList) Less(i, j int) bool

func (*ErrorList) RemoveMultiples

func (p *ErrorList) RemoveMultiples()

RemoveMultiples對一個ErrorList進(jìn)行排序并刪除每行的第一個錯誤。

func (*ErrorList) Reset

func (p *ErrorList) Reset()

重置將錯誤列表重置為無錯誤。

func (ErrorList) Sort

func (p ErrorList) Sort()

Sort排序錯誤列表。*錯誤條目按位置排序,其他錯誤按錯誤消息排序,并且在任何*錯誤條目之前。

func (ErrorList) Swap

func (p ErrorList) Swap(i, j int)

type Mode

mode值是一組標(biāo)志(或0)。他們控制掃描儀行為。

type Mode uint
const (
        ScanComments Mode = 1 << iota // return comments as COMMENT tokens)

type Scanner

Scanner在處理給定文本時保存掃描儀的內(nèi)部狀態(tài)。它可以作為另一個數(shù)據(jù)結(jié)構(gòu)的一部分進(jìn)行分配,但必須在使用前通過Init進(jìn)行初始化。

type Scanner struct {        // public state - ok to modify
        ErrorCount int // number of errors encountered        // contains filtered or unexported fields}

func (*Scanner) Init

func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode)

Init通過將掃描器設(shè)置為src的開頭來準(zhǔn)備掃描器來標(biāo)記文本src。掃描儀使用文件集文件獲取位置信息,并為每行添加行信息。當(dāng)重新掃描相同的文件時,重新使用同一文件是可以的,因?yàn)橐呀?jīng)存在的行信息將被忽略。如果文件大小與src大小不匹配,則Init會導(dǎo)致混亂。

如果遇到語法錯誤并且err不為零,則調(diào)用掃描將調(diào)用錯誤處理程序err。此外,對于遇到的每個錯誤,掃描器字段ErrorCount都會加1。模式參數(shù)決定如何處理注釋。

請注意,如果文件的第一個字符有錯誤,Init可能會調(diào)用err。

func (*Scanner) Scan

func (s *Scanner) Scan() (pos token.Pos, tok token.Token, lit string)

Scan掃描下一個標(biāo)記并返回標(biāo)記位置,標(biāo)記及其文字字符串(如果適用)。源端由token.EOF指示。

如果返回的標(biāo)記是文字(token.IDENT,token.INT,token.FLOAT,token.IMAG,token.CHAR,token.STRING)或token.COMMENT,則文字字符串具有相應(yīng)的值。

如果返回的標(biāo)記是關(guān)鍵字,則字符串是關(guān)鍵字。

如果返回的令牌是token.SEMICOLON,則相應(yīng)的文字字符串是“;” 如果分號存在于源中,則“\ n”如果由于換行符或EOF而插入了分號。

如果返回的標(biāo)記是token.ILLEGAL,則文字字符串是違規(guī)字符。

在其他所有情況下,Scan會返回一個空的文字字符串。

對于更寬容的解析,如果可能,即使遇到語法錯誤,Scan也會返回有效的令牌。因此,即使生成的令牌序列不包含非法令牌,客戶端也不能認(rèn)為沒有發(fā)生錯誤。相反,它必須檢查掃描器的ErrorCount或錯誤處理程序的調(diào)用次數(shù),如果安裝了一個。

Scan 行信息添加到添加到Init文件集的文件中。令牌位置與該文件相關(guān),因此與文件集有關(guān)。

例子

package mainimport ("fmt""go/scanner""go/token")func main() {// src is the input that we want to tokenize.
	src := []byte("cos(x) + 1i*sin(x) // Euler")// Initialize the scanner.var s scanner.Scanner
	fset := token.NewFileSet()                      // positions are relative to fset
	file := fset.AddFile("", fset.Base(), len(src)) // register input "file"
	s.Init(file, src, nil /* no error handler */, scanner.ScanComments)// Repeated calls to Scan yield the token sequence found in the input.for {
		pos, tok, lit := s.Scan()if tok == token.EOF {break}
		fmt.Printf("%s\t%s\t%q\n", fset.Position(pos), tok, lit)}}
Previous article: Next article: