directory search
archive archive/tar archive/zip bufio bufio(缓存) builtin builtin(内置包) bytes bytes(包字节) compress compress/bzip2(压缩/bzip2) compress/flate(压缩/flate) compress/gzip(压缩/gzip) compress/lzw(压缩/lzw) compress/zlib(压缩/zlib) container container/heap(容器数据结构heap) container/list(容器数据结构list) container/ring(容器数据结构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(数据库/sql) database/sql/driver(数据库/sql/driver) debug debug/dwarf(调试/dwarf) debug/elf(调试/elf) debug/gosym(调试/gosym) debug/macho(调试/macho) debug/pe(调试/pe) debug/plan9obj(调试/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(命令行参数解析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(调色板) image/draw(绘图) image/gif image/jpeg image/png index index/suffixarray io io io/ioutil log log log/syslog(日志系统) 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(正则表达式) regexp/syntax runtime runtime(运行时) runtime/debug(调试) runtime/internal/sys runtime/pprof runtime/race(竞争) runtime/trace(执行追踪器) sort sort(排序算法) strconv strconv(转换) strings strings(字符串) sync sync(同步) sync/atomic(原子操作) syscall syscall(系统调用) 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/token"

  • Overview

  • Index

概观

Package标记定义代表Go编程语言的词法标记的常量和标记(打印,谓词)的基本操作。

索引

  • Constants

  • type File

  • func (f *File) AddLine(offset int)

  • func (f *File) AddLineInfo(offset int, filename string, line int)

  • func (f *File) Base() int

  • func (f *File) Line(p Pos) int

  • func (f *File) LineCount() int

  • func (f *File) MergeLine(line int)

  • func (f *File) Name() string

  • func (f *File) Offset(p Pos) int

  • func (f *File) Pos(offset int) Pos

  • func (f *File) Position(p Pos) (pos Position)

  • func (f *File) PositionFor(p Pos, adjusted bool) (pos Position)

  • func (f *File) SetLines(lines []int) bool

  • func (f *File) SetLinesForContent(content []byte)

  • func (f *File) Size() int

  • type FileSet

  • func NewFileSet() *FileSet

  • func (s *FileSet) AddFile(filename string, base, size int) *File

  • func (s *FileSet) Base() int

  • func (s *FileSet) File(p Pos) (f *File)

  • func (s *FileSet) Iterate(f func(*File) bool)

  • func (s *FileSet) Position(p Pos) (pos Position)

  • func (s *FileSet) PositionFor(p Pos, adjusted bool) (pos Position)

  • func (s *FileSet) Read(decode func(interface{}) error) error

  • func (s *FileSet) Write(encode func(interface{}) error) error

  • type Pos

  • func (p Pos) IsValid() bool

  • type Position

  • func (pos *Position) IsValid() bool

  • func (pos Position) String() string

  • type Token

  • func Lookup(ident string) Token

  • func (tok Token) IsKeyword() bool

  • func (tok Token) IsLiteral() bool

  • func (tok Token) IsOperator() bool

  • func (op Token) Precedence() int

  • func (tok Token) String() string

包文件

position.go serialize.go token.go

常量

一组基于优先级的表达式分析的常量。非运营商的优先级最低,其次是运营商从优先级1开始直到一元运营商。最高优先级用作选择器,索引和其他运算符和分隔符令牌的“全部捕捉”优先级。

const (
        LowestPrec  = 0 // non-operators
        UnaryPrec   = 6
        HighestPrec = 7)

type File

文件是属于FileSet的文件的句柄。文件具有名称,大小和行偏移量表。

type File struct {        // contains filtered or unexported fields}

func (*File) AddLine

func (f *File) AddLine(offset int)

AddLine为新行添加行偏移量。行偏移量必须大于前一行的偏移量并小于文件大小; 否则行偏移将被忽略。

func (*File) AddLineInfo

func (f *File) AddLineInfo(offset int, filename string, line int)

AddLineInfo为给定的文件偏移量添加替代文件和行号信息。偏移量必须大于先前添加的替代线信息的偏移量并小于文件大小; 否则信息被忽略。

AddLineInfo通常用于注册//行文件名的替代位置信息:源文件中的行注释。

func (*File) Base

func (f *File) Base() int

Base返回使用AddFile注册的文件f的基本偏移量。

func (*File) Line

func (f *File) Line(p Pos) int

Line返回给定文件位置p的行号; p必须是该文件或NoPos中的Pos值。

func (*File) LineCount

func (f *File) LineCount() int

LineCount返回文件f中的行数。

func (*File) MergeLine

func (f *File) MergeLine(line int)

MergeLine将一行与以下行合并。它类似于用一个空格替换行尾的换行符(以不改变剩余的偏移量)。要获得行号,请参考例如Position.Line。如果给出无效的行号,MergeLine将会发生混乱。

func (*File) Name

func (f *File) Name() string

Name返回使用AddFile注册的文件f的文件名。

func (*File) Offset

func (f *File) Offset(p Pos) int

偏移返回给定文件位置p的偏移量; p必须是该文件中的有效Pos值。f.Offset(f.Pos(offset))== offset。

func (*File) Pos

func (f *File) Pos(offset int) Pos

Pos返回给定文件偏移量的Pos值; 偏移量必须<= f.Size()。f.Pos(f.Offset(p))== p。

func (*File) Position

func (f *File) Position(p Pos) (pos Position)

位置返回给定文件位置p的位置值。调用f.Position(p)等效于调用f.PositionFor(p,true)。

func (*File) PositionFor

func (f *File) PositionFor(p Pos, adjusted bool) (pos Position)

PositionFor返回给定文件位置p的Position值。如果调整已设置,则可以通过改变位置//行注释来调整位置; 否则这些评论被忽略。p必须是f或NoPos中的Pos值。

func (*File) SetLines

func (f *File) SetLines(lines []int) bool

SetLines设置文件的行偏移量并报告它是否成功。线偏移量是每行第一个字符的偏移量; 例如对于内容“ab \ nc \ n”,行偏移是{0,3}。一个空文件有一个空行偏移表。每行偏移量必须大于前一行的偏移量并小于文件大小; 否则SetLines失败并返回false。在SetLines返回之后,调用者不得改变提供的切片。

func (*File) SetLinesForContent

func (f *File) SetLinesForContent(content []byte)

SetLinesForContent设置给定文件内容的行偏移量。它忽略了改变位置的//行注释。

func (*File) Size

func (f *File) Size() int

Size返回使用AddFile注册的文件f的大小。

type FileSet

FileSet代表一组源文件。文件集的方法是同步的; 多个goroutines可以同时调用它们。

type FileSet struct {        // contains filtered or unexported fields}

func NewFileSet

func NewFileSet() *FileSet

NewFileSet创建一个新的文件集。

func (*FileSet) AddFile

func (s *FileSet) AddFile(filename string, base, size int) *File

AddFile将具有给定文件名,基础偏移量和文件大小的新文件添加到文件集s并返回文件。多个文件可能具有相同的名称。基本偏移不得小于FileSet的Base(),并且大小不能是负数。作为一种特殊情况,如果提供了否定基数,则将使用FileSet的Base()的当前值。

添加文件将把文件集的Base()值设置为base + size + 1作为下一个文件的最小基值。以下关系存在于给定文件偏移量的Pos值p之间:

int(p) = base + offs

在范围0,大小和因此在范围基地,基地+大小的偏差。为了方便起见,File.Pos可用于从文件偏移量创建文件特定的位置值。

func (*FileSet) Base

func (s *FileSet) Base() int

Base返回添加下一个文件时必须提供给AddFile的最小基本偏移量。

func (*FileSet) File

func (s *FileSet) File(p Pos) (f *File)

文件返回包含位置p的文件。如果没有找到这样的文件(例如p == NoPos),结果为零。

func (*FileSet) Iterate

func (s *FileSet) Iterate(f func(*File) bool)

按照添加的顺序迭代调用f来获取文件集中的文件,直到f返回false。

func (*FileSet) Position

func (s *FileSet) Position(p Pos) (pos Position)

位置将文件集中的Pos p转换为Position值。调用s.Position(p)等效于调用s.PositionFor(p,true)。

func (*FileSet) PositionFor

func (s *FileSet) PositionFor(p Pos, adjusted bool) (pos Position)

PositionFor将文件集中的Pos p转换为Position值。如果调整已设置,则可以通过改变位置//行注释来调整位置; 否则这些评论被忽略。p必须是s或NoPos中的Pos值。

func (*FileSet) Read

func (s *FileSet) Read(decode func(interface{}) error) error

读取调用解码以将一个文件集反序列化为s; s不能为零。

func (*FileSet) Write

func (s *FileSet) Write(encode func(interface{}) error) error

编写调用编码以序列化文件集。

type Pos

Pos是文件集中源位置的紧凑编码。它可以转换为一个更方便,但更大的表示的位置。

给定文件的Pos值是基本范围base + size中的数字,其中base和size是通过AddFile将文件添加到文件集时指定的。

要为特定源偏移量创建Pos值(以字节为单位),请首先使用FileSet.AddFile将相应文件添加到当前文件集,然后调用该文件的File.Pos(offset)。给定特定文件集fset的Pos值p,通过调用fset.Position(p)获得相应的Position值。

可以将Pos值直接与通常的比较运算符进行比较:如果两个Pos值p和q在同一个文件中,则比较p和q就相当于比较各个源文件偏移量。如果p和q在不同的文件中,如果p所隐含的文件被添加到q所隐含的文件之前的相应文件集中,则p <q为真。

type Pos int

Pos的零值是NoPos; 没有与之关联的文件和行信息,并且NoPos.IsValid()为false。NoPos总是小于任何其他Pos值。NoPos的相应位置值是位置的零值。

const NoPos Pos = 0

func (Pos) IsValid

func (p Pos) IsValid() bool

IsValid报告该位置是否有效。

type Position

位置描述包括文件,行和列位置的任意源位置。如果行号> 0,则位置有效。

type Position struct {
        Filename string // filename, if any
        Offset   int    // offset, starting at 0
        Line     int    // line number, starting at 1
        Column   int    // column number, starting at 1 (byte count)}

func (*Position) IsValid

func (pos *Position) IsValid() bool

IsValid报告该位置是否有效。

func (Position) String

func (pos Position) String() string

字符串以几种形式之一返回一个字符串:

file:line:column    valid position with file name
line:column         valid position without file name
file                invalid position with file name-                   invalid position without file name

type Token

令牌是Go编程语言的一组词汇标记。

type Token int

令牌列表。

const (        // Special tokens
        ILLEGAL Token = iota
        EOF
        COMMENT        // Identifiers and basic type literals        // (these tokens stand for classes of literals)
        IDENT  // main
        INT    // 12345
        FLOAT  // 123.45
        IMAG   // 123.45i
        CHAR   // 'a'
        STRING // "abc"        // Operators and delimiters
        ADD // +
        SUB // -
        MUL // *
        QUO // /
        REM // %

        AND     // &
        OR      // |
        XOR     // ^
        SHL     // <<
        SHR     // >>
        AND_NOT // &^

        ADD_ASSIGN // +=
        SUB_ASSIGN // -=
        MUL_ASSIGN // *=
        QUO_ASSIGN // /=
        REM_ASSIGN // %=

        AND_ASSIGN     // &=
        OR_ASSIGN      // |=
        XOR_ASSIGN     // ^=
        SHL_ASSIGN     // <<=
        SHR_ASSIGN     // >>=
        AND_NOT_ASSIGN // &^=

        LAND  // &&
        LOR   // ||
        ARROW // <-
        INC   // ++
        DEC   // --

        EQL    // ==
        LSS    // <
        GTR    // >
        ASSIGN // =
        NOT    // !

        NEQ      // !=
        LEQ      // <=
        GEQ      // >=
        DEFINE   // :=
        ELLIPSIS // ...

        LPAREN // (
        LBRACK // [
        LBRACE // {
        COMMA  // ,
        PERIOD // .

        RPAREN    // )
        RBRACK    // ]
        RBRACE    // }
        SEMICOLON // ;
        COLON     // :        // Keywords
        BREAK
        CASE
        CHAN
        CONST
        CONTINUE

        DEFAULT
        DEFER
        ELSE
        FALLTHROUGH
        FOR

        FUNC
        GO
        GOTO
        IF
        IMPORT

        INTERFACE        MAP
        PACKAGE
        RANGE
        RETURN

        SELECT
        STRUCT
        SWITCH
        TYPE
        VAR)

func Lookup

func Lookup(ident string) Token

Lookup会将标识符映射到其关键字标记或IDENT(如果不是关键字)。

func (Token) IsKeyword

func (tok Token) IsKeyword() bool

IsKeyword对与关键字相对应的标记返回true; 否则返回false。

func (Token) IsLiteral

func (tok Token) IsLiteral() bool

对于与标识符和基本类型文字相对应的标记,IsLiteral返回true; 否则返回false。

func (Token) IsOperator

func (tok Token) IsOperator() bool

IsOperator对运算符和分隔符对应的令牌返回true; 否则返回false。

func (Token) Precedence

func (op Token) Precedence() int

优先级返回二元运算符op的运算符优先级。如果op不是二元运算符,则结果为LowestPrecedence。

func (Token) String

func (tok Token) String() string

字符串返回对应于令牌tok的字符串。对于运算符,分隔符和关键字,字符串是实际的令牌字符序列(例如,对于令牌ADD,字符串是“+”)。对于所有其他标记,字符串对应于标记常量名称(例如对于标记IDENT,字符串是“IDENT”)。

Previous article: Next article: