Documentation ¶
Index ¶
- Constants
- Variables
- func Fdump(w io.Writer, n Node) (err error)
- func Fprint(w io.Writer, x Node, linebreaks bool) (n int, err error)
- func String(n Node) string
- type ArrayType
- type AssertExpr
- type AssignStmt
- type BasicLit
- type BlockStmt
- type BranchStmt
- type CallExpr
- type CallStmt
- type CaseClause
- type ChanDir
- type ChanType
- type CommClause
- type Comment
- type CommentKind
- type CompositeLit
- type ConstDecl
- type Decl
- type DeclStmt
- type DotsType
- type EmptyStmt
- type Error
- type ErrorHandler
- type Expr
- type ExprStmt
- type Field
- type File
- func Parse(base *src.PosBase, src io.Reader, errh ErrorHandler, pragh PragmaHandler, ...) (_ *File, first error)
- func ParseBytes(base *src.PosBase, src []byte, errh ErrorHandler, pragh PragmaHandler, ...) (*File, error)
- func ParseFile(filename string, errh ErrorHandler, pragh PragmaHandler, mode Mode) (*File, error)
- type ForStmt
- type FuncDecl
- type FuncLit
- type FuncType
- type Group
- type IfStmt
- type ImportDecl
- type IndexExpr
- type InterfaceType
- type KeyValueExpr
- type LabeledStmt
- type ListExpr
- type LitKind
- type MapType
- type Mode
- type Name
- type Node
- type Operation
- type Operator
- type ParenExpr
- type Pragma
- type PragmaHandler
- type RangeClause
- type ReturnStmt
- type SelectStmt
- type SelectorExpr
- type SendStmt
- type SimpleStmt
- type SliceExpr
- type SliceType
- type Stmt
- type StructType
- type SwitchStmt
- type TypeDecl
- type TypeSwitchGuard
- type VarDecl
Constants ¶
const ( // for BranchStmt Break = _Break Continue = _Continue Fallthrough = _Fallthrough Goto = _Goto // for CallStmt Go = _Go Defer = _Defer )
Variables ¶
var ImplicitOne = &BasicLit{Value: "1"}
We represent x++, x-- as assignments x += ImplicitOne, x -= ImplicitOne. ImplicitOne should not be used elsewhere.
Functions ¶
Types ¶
type ArrayType ¶
type ArrayType struct { // TODO(gri) consider using Name{"..."} instead of nil (permits attaching of comments) Len Expr // nil means Len is ... Elem Expr // contains filtered or unexported fields }
[Len]Elem
type AssertExpr ¶
type AssertExpr struct { X Expr // TODO(gri) consider using Name{"..."} instead of nil (permits attaching of comments) Type Expr // contains filtered or unexported fields }
X.(Type)
type AssignStmt ¶
type BranchStmt ¶
type BranchStmt struct { Tok token // Break, Continue, Fallthrough, or Goto Label *Name // contains filtered or unexported fields }
type CallExpr ¶
type CallExpr struct { Fun Expr ArgList []Expr HasDots bool // last argument is followed by ... // contains filtered or unexported fields }
Fun(ArgList[0], ArgList[1], ...)
type CallStmt ¶
type CallStmt struct { Tok token // Go or Defer Call *CallExpr // contains filtered or unexported fields }
type CaseClause ¶
type ChanType ¶
type ChanType struct { Dir ChanDir // 0 means no direction Elem Expr // contains filtered or unexported fields }
chan Elem
<-chan Elem chan<- Elem
type CommClause ¶
type CommClause struct { Comm SimpleStmt // send or receive stmt; nil means default clause Body []Stmt // contains filtered or unexported fields }
type Comment ¶
type Comment struct { Kind CommentKind Text string Next *Comment }
type CommentKind ¶
type CommentKind uint
TODO(gri) Consider renaming to CommentPos, CommentPlacement, etc.
Kind = Above doesn't make much sense.
const ( Above CommentKind = iota Below Left Right )
type CompositeLit ¶
type CompositeLit struct { Type Expr // nil means no literal type ElemList []Expr NKeys int // number of elements with keys EndLine uint // TODO(mdempsky): Cleaner solution. // contains filtered or unexported fields }
Type { ElemList[0], ElemList[1], ... }
type ConstDecl ¶
type ConstDecl struct { NameList []*Name Type Expr // nil means no type Values Expr // nil means no values Group *Group // nil means not part of a group // contains filtered or unexported fields }
NameList NameList = Values NameList Type = Values
type DotsType ¶
type DotsType struct { Elem Expr // contains filtered or unexported fields }
...Elem
type ErrorHandler ¶
type ErrorHandler func(err error)
An ErrorHandler is called for each error encountered reading a .go file.
type Field ¶
type Field struct { Name *Name // nil means anonymous field/parameter (structs/parameters), or embedded interface (interfaces) Type Expr // field names declared in a list share the same Type (identical pointers) // contains filtered or unexported fields }
Name Type
Type
type File ¶
type File struct { PkgName *Name DeclList []Decl Lines uint // contains filtered or unexported fields }
package PkgName; DeclList[0], DeclList[1], ...
func Parse ¶
func Parse(base *src.PosBase, src io.Reader, errh ErrorHandler, pragh PragmaHandler, mode Mode) (_ *File, first error)
Parse parses a single Go source file from src and returns the corresponding syntax tree. If there are errors, Parse will return the first error found. The base argument is only used for position information.
If errh != nil, it is called with each error encountered, and Parse will process as much source as possible. If errh is nil, Parse will terminate immediately upon encountering an error.
If a PragmaHandler is provided, it is called with each pragma encountered.
The Mode argument is currently ignored.
func ParseBytes ¶
func ParseBytes(base *src.PosBase, src []byte, errh ErrorHandler, pragh PragmaHandler, mode Mode) (*File, error)
ParseBytes behaves like Parse but it reads the source from the []byte slice provided.
func ParseFile ¶
func ParseFile(filename string, errh ErrorHandler, pragh PragmaHandler, mode Mode) (*File, error)
ParseFile behaves like Parse but it reads the source from the named file.
type ForStmt ¶
type ForStmt struct { Init SimpleStmt // incl. *RangeClause Cond Expr Post SimpleStmt Body []Stmt // contains filtered or unexported fields }
type FuncDecl ¶
type FuncDecl struct { Attr map[string]bool // go:attr map Recv *Field // nil means regular function Name *Name Type *FuncType Body []Stmt // nil means no body (forward declaration) Pragma Pragma // TODO(mdempsky): Cleaner solution. EndLine uint // TODO(mdempsky): Cleaner solution. // contains filtered or unexported fields }
func Name Type { Body } func Name Type func Receiver Name Type { Body } func Receiver Name Type
type FuncLit ¶
type FuncLit struct { Type *FuncType Body []Stmt EndLine uint // TODO(mdempsky): Cleaner solution. // contains filtered or unexported fields }
func Type { Body }
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
All declarations belonging to the same group point to the same Group node.
type IfStmt ¶
type IfStmt struct { Init SimpleStmt Cond Expr Then []Stmt Else Stmt // either *IfStmt or *BlockStmt // contains filtered or unexported fields }
type ImportDecl ¶
type ImportDecl struct { LocalPkgName *Name // including "."; nil means no rename present Path *BasicLit Group *Group // nil means not part of a group // contains filtered or unexported fields }
Path
LocalPkgName Path
type InterfaceType ¶
type InterfaceType struct { MethodList []*Field // contains filtered or unexported fields }
interface { MethodList[0]; MethodList[1]; ... }
type KeyValueExpr ¶
type KeyValueExpr struct {
Key, Value Expr
// contains filtered or unexported fields
}
Key: Value
type LabeledStmt ¶
type ListExpr ¶
type ListExpr struct { ElemList []Expr // contains filtered or unexported fields }
ElemList[0], ElemList[1], ...
type Operator ¶
type Operator uint
const ( Def Operator // := Not // ! Recv // <- // precOrOr OrOr // || // precAndAnd AndAnd // && // precCmp Eql // == Neq // != Lss // < Leq // <= Gtr // > Geq // >= // precAdd Add // + Sub // - Or // | Xor // ^ // precMul Mul // * Div // / Rem // % And // & AndNot // &^ Shl // << Shr // >> )
type Pragma ¶
type Pragma uint16
A Pragma value is a set of flags that augment a function or type declaration. Callers may assign meaning to the flags as appropriate.
type PragmaHandler ¶
A PragmaHandler is used to process //line and //go: directives as they're scanned. The returned Pragma value will be unioned into the next FuncDecl node.
type RangeClause ¶
type ReturnStmt ¶
type ReturnStmt struct { Results Expr // nil means no explicit return values // contains filtered or unexported fields }
type SelectStmt ¶
type SelectStmt struct { Body []*CommClause // contains filtered or unexported fields }
type SelectorExpr ¶
X.Sel
type SendStmt ¶
type SendStmt struct {
Chan, Value Expr // Chan <- Value
// contains filtered or unexported fields
}
type SimpleStmt ¶
type SimpleStmt interface { Stmt // contains filtered or unexported methods }
type SliceExpr ¶
type SliceExpr struct { X Expr Index [3]Expr // Full indicates whether this is a simple or full slice expression. // In a valid AST, this is equivalent to Index[2] != nil. // TODO(mdempsky): This is only needed to report the "3-index // slice of string" error when Index[2] is missing. Full bool // contains filtered or unexported fields }
X[Index[0] : Index[1] : Index[2]]
type SliceType ¶
type SliceType struct { Elem Expr // contains filtered or unexported fields }
[]Elem
type StructType ¶
type StructType struct { FieldList []*Field TagList []*BasicLit // i >= len(TagList) || TagList[i] == nil means no tag for field i // contains filtered or unexported fields }
struct { FieldList[0] TagList[0]; FieldList[1] TagList[1]; ... }
type SwitchStmt ¶
type SwitchStmt struct { Init SimpleStmt Tag Expr Body []*CaseClause // contains filtered or unexported fields }
type TypeDecl ¶
type TypeDecl struct { Name *Name Alias bool Type Expr Group *Group // nil means not part of a group Pragma Pragma // contains filtered or unexported fields }
Name Type