Help us shape the future of Go! Take the 2026 Go Developer Survey

ast

package
v1.7.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2020 License: MIT Imports: 6 Imported by: 181

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidTokenType = xerrors.New("invalid token type")
)

Functions

func Walk

func Walk(v Visitor, node Node)

Walk traverses an AST in depth-first order: It starts by calling v.Visit(node); node must not be nil. If the visitor w returned by v.Visit(node) is not nil, Walk is invoked recursively with visitor w for each of the non-nil children of node, followed by a call of w.Visit(nil).

Types

type AliasNode

type AliasNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Value   Node
}

AliasNode type of alias node

func (*AliasNode) AddColumn added in v1.1.4

func (n *AliasNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*AliasNode) GetComment added in v1.4.5

func (n *AliasNode) GetComment() *token.Token

GetComment returns comment token instance

func (*AliasNode) GetToken

func (n *AliasNode) GetToken() *token.Token

GetToken returns token instance

func (*AliasNode) SetComment added in v1.4.5

func (n *AliasNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*AliasNode) String

func (n *AliasNode) String() string

String alias to text

func (*AliasNode) Type

func (n *AliasNode) Type() NodeType

Type returns AliasType

type AnchorNode

type AnchorNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Name    Node
	Value   Node
}

AnchorNode type of anchor node

func (*AnchorNode) AddColumn added in v1.1.4

func (n *AnchorNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*AnchorNode) GetComment added in v1.4.5

func (n *AnchorNode) GetComment() *token.Token

GetComment returns comment token instance

func (*AnchorNode) GetToken

func (n *AnchorNode) GetToken() *token.Token

GetToken returns token instance

func (*AnchorNode) SetComment added in v1.4.5

func (n *AnchorNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*AnchorNode) String

func (n *AnchorNode) String() string

String anchor to text

func (*AnchorNode) Type

func (n *AnchorNode) Type() NodeType

Type returns AnchorType

type ArrayNode

type ArrayNode interface {
	ArrayRange() *ArrayNodeIter
}

ArrayNode interface of SequenceNode

type ArrayNodeIter

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

ArrayNodeIter is an iterator for ranging over a ArrayNode

func (*ArrayNodeIter) Len

func (m *ArrayNodeIter) Len() int

Len returns length of array

func (*ArrayNodeIter) Next

func (m *ArrayNodeIter) Next() bool

Next advances the array iterator and reports whether there is another entry. It returns false when the iterator is exhausted.

func (*ArrayNodeIter) Value

func (m *ArrayNodeIter) Value() Node

Value returns the value of the iterator's current array entry.

type BoolNode

type BoolNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
	Value   bool
}

BoolNode type of boolean node

func (*BoolNode) AddColumn added in v1.1.4

func (n *BoolNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*BoolNode) GetComment added in v1.4.5

func (n *BoolNode) GetComment() *token.Token

GetComment returns comment token instance

func (*BoolNode) GetToken

func (n *BoolNode) GetToken() *token.Token

GetToken returns token instance

func (*BoolNode) GetValue

func (n *BoolNode) GetValue() interface{}

GetValue returns boolean value

func (*BoolNode) SetComment added in v1.4.5

func (n *BoolNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*BoolNode) String

func (n *BoolNode) String() string

String boolean to text

func (*BoolNode) Type

func (n *BoolNode) Type() NodeType

Type returns BoolType

type CommentNode added in v1.4.5

type CommentNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
}

CommentNode type of comment node

func (*CommentNode) AddColumn added in v1.4.5

func (n *CommentNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*CommentNode) GetComment added in v1.4.5

func (n *CommentNode) GetComment() *token.Token

GetComment returns comment token instance

func (*CommentNode) GetToken added in v1.4.5

func (n *CommentNode) GetToken() *token.Token

GetToken returns token instance

func (*CommentNode) SetComment added in v1.4.5

func (n *CommentNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*CommentNode) String added in v1.4.5

func (n *CommentNode) String() string

String comment to text

func (*CommentNode) Type added in v1.4.5

func (n *CommentNode) Type() NodeType

Type returns TagType

type DirectiveNode

type DirectiveNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Value   Node
}

DirectiveNode type of directive node

func (*DirectiveNode) AddColumn added in v1.1.4

func (n *DirectiveNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*DirectiveNode) GetComment added in v1.4.5

func (n *DirectiveNode) GetComment() *token.Token

GetComment returns comment token instance

func (*DirectiveNode) GetToken

func (n *DirectiveNode) GetToken() *token.Token

GetToken returns token instance

func (*DirectiveNode) SetComment added in v1.4.5

func (n *DirectiveNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*DirectiveNode) String

func (n *DirectiveNode) String() string

String directive to text

func (*DirectiveNode) Type

func (n *DirectiveNode) Type() NodeType

Type returns DirectiveType

type Document

type Document struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token // position of DocumentHeader ( `---` )
	End     *token.Token // position of DocumentEnd ( `...` )
	Body    Node
}

Document type of Document

func (*Document) AddColumn added in v1.1.4

func (d *Document) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*Document) GetComment added in v1.4.5

func (d *Document) GetComment() *token.Token

GetComment returns comment token instance

func (*Document) GetToken

func (d *Document) GetToken() *token.Token

GetToken returns token instance

func (*Document) SetComment added in v1.4.5

func (d *Document) SetComment(tk *token.Token) error

SetComment set comment token

func (*Document) String

func (d *Document) String() string

String document to text

func (*Document) Type

func (d *Document) Type() NodeType

Type returns DocumentType

type File

type File struct {
	Name string
	Docs []*Document
}

File contains all documents in YAML file

func (*File) String

func (f *File) String() string

String all documents to text

type FloatNode

type FloatNode struct {
	ScalarNode
	Comment   *token.Token // position of Comment ( `#comment` )
	Token     *token.Token
	Precision int
	Value     float64
}

FloatNode type of float node

func (*FloatNode) AddColumn added in v1.1.4

func (n *FloatNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*FloatNode) GetComment added in v1.4.5

func (n *FloatNode) GetComment() *token.Token

GetComment returns comment token instance

func (*FloatNode) GetToken

func (n *FloatNode) GetToken() *token.Token

GetToken returns token instance

func (*FloatNode) GetValue

func (n *FloatNode) GetValue() interface{}

GetValue returns float64 value

func (*FloatNode) SetComment added in v1.4.5

func (n *FloatNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*FloatNode) String

func (n *FloatNode) String() string

String float64 to text

func (*FloatNode) Type

func (n *FloatNode) Type() NodeType

Type returns FloatType

type InfinityNode

type InfinityNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
	Value   float64
}

InfinityNode type of infinity node

func (*InfinityNode) AddColumn added in v1.1.4

func (n *InfinityNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*InfinityNode) GetComment added in v1.4.5

func (n *InfinityNode) GetComment() *token.Token

GetComment returns comment token instance

func (*InfinityNode) GetToken

func (n *InfinityNode) GetToken() *token.Token

GetToken returns token instance

func (*InfinityNode) GetValue

func (n *InfinityNode) GetValue() interface{}

GetValue returns math.Inf(0) or math.Inf(-1)

func (*InfinityNode) SetComment added in v1.4.5

func (n *InfinityNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*InfinityNode) String

func (n *InfinityNode) String() string

String infinity to text

func (*InfinityNode) Type

func (n *InfinityNode) Type() NodeType

Type returns InfinityType

type IntegerNode

type IntegerNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
	Value   interface{} // int64 or uint64 value
}

IntegerNode type of integer node

func (*IntegerNode) AddColumn added in v1.1.4

func (n *IntegerNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*IntegerNode) GetComment added in v1.4.5

func (n *IntegerNode) GetComment() *token.Token

GetComment returns comment token instance

func (*IntegerNode) GetToken

func (n *IntegerNode) GetToken() *token.Token

GetToken returns token instance

func (*IntegerNode) GetValue

func (n *IntegerNode) GetValue() interface{}

GetValue returns int64 value

func (*IntegerNode) SetComment added in v1.4.5

func (n *IntegerNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*IntegerNode) String

func (n *IntegerNode) String() string

String int64 to text

func (*IntegerNode) Type

func (n *IntegerNode) Type() NodeType

Type returns IntegerType

type LiteralNode

type LiteralNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Value   *StringNode
}

LiteralNode type of literal node

func (*LiteralNode) AddColumn added in v1.1.4

func (n *LiteralNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*LiteralNode) GetComment added in v1.4.5

func (n *LiteralNode) GetComment() *token.Token

GetComment returns comment token instance

func (*LiteralNode) GetToken

func (n *LiteralNode) GetToken() *token.Token

GetToken returns token instance

func (*LiteralNode) GetValue

func (n *LiteralNode) GetValue() interface{}

GetValue returns string value

func (*LiteralNode) SetComment added in v1.4.5

func (n *LiteralNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*LiteralNode) String

func (n *LiteralNode) String() string

String literal to text

func (*LiteralNode) Type

func (n *LiteralNode) Type() NodeType

Type returns LiteralType

type MapNode

type MapNode interface {
	MapRange() *MapNodeIter
}

MapNode interface of MappingValueNode / MappingNode

type MapNodeIter

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

MapNodeIter is an iterator for ranging over a MapNode

func (*MapNodeIter) Key

func (m *MapNodeIter) Key() Node

Key returns the key of the iterator's current map node entry.

func (*MapNodeIter) Next

func (m *MapNodeIter) Next() bool

Next advances the map iterator and reports whether there is another entry. It returns false when the iterator is exhausted.

func (*MapNodeIter) Value

func (m *MapNodeIter) Value() Node

Value returns the value of the iterator's current map node entry.

type MappingNode

type MappingNode struct {
	Comment     *token.Token // position of Comment ( `#comment` )
	Start       *token.Token
	End         *token.Token
	IsFlowStyle bool
	Values      []*MappingValueNode
}

MappingNode type of mapping node

func Mapping

func Mapping(tk *token.Token, isFlowStyle bool) *MappingNode

Mapping create node for map

func (*MappingNode) AddColumn added in v1.1.4

func (n *MappingNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*MappingNode) GetComment added in v1.4.5

func (n *MappingNode) GetComment() *token.Token

GetComment returns comment token instance

func (*MappingNode) GetToken

func (n *MappingNode) GetToken() *token.Token

GetToken returns token instance

func (*MappingNode) MapRange

func (n *MappingNode) MapRange() *MapNodeIter

MapRange implements MapNode protocol

func (*MappingNode) SetComment added in v1.4.5

func (n *MappingNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*MappingNode) String

func (n *MappingNode) String() string

String mapping values to text

func (*MappingNode) Type

func (n *MappingNode) Type() NodeType

Type returns MappingType

type MappingValueNode

type MappingValueNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Key     Node
	Value   Node
}

MappingValueNode type of mapping value

func (*MappingValueNode) AddColumn added in v1.1.4

func (n *MappingValueNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*MappingValueNode) GetComment added in v1.4.5

func (n *MappingValueNode) GetComment() *token.Token

GetComment returns comment token instance

func (*MappingValueNode) GetToken

func (n *MappingValueNode) GetToken() *token.Token

GetToken returns token instance

func (*MappingValueNode) MapRange

func (n *MappingValueNode) MapRange() *MapNodeIter

MapRange implements MapNode protocol

func (*MappingValueNode) SetComment added in v1.4.5

func (n *MappingValueNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*MappingValueNode) String

func (n *MappingValueNode) String() string

String mapping value to text

func (*MappingValueNode) Type

func (n *MappingValueNode) Type() NodeType

Type returns MappingValueType

type MergeKeyNode

type MergeKeyNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
}

MergeKeyNode type of merge key node

func (*MergeKeyNode) AddColumn added in v1.4.0

func (n *MergeKeyNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*MergeKeyNode) GetComment added in v1.4.5

func (n *MergeKeyNode) GetComment() *token.Token

GetComment returns comment token instance

func (*MergeKeyNode) GetToken

func (n *MergeKeyNode) GetToken() *token.Token

GetToken returns token instance

func (*MergeKeyNode) GetValue

func (n *MergeKeyNode) GetValue() interface{}

GetValue returns '<<' value

func (*MergeKeyNode) SetComment added in v1.4.5

func (n *MergeKeyNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*MergeKeyNode) String

func (n *MergeKeyNode) String() string

String returns '<<' value

func (*MergeKeyNode) Type

func (n *MergeKeyNode) Type() NodeType

Type returns MergeKeyType

type NanNode

type NanNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
}

NanNode type of nan node

func (*NanNode) AddColumn added in v1.1.4

func (n *NanNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*NanNode) GetComment added in v1.4.5

func (n *NanNode) GetComment() *token.Token

GetComment returns comment token instance

func (*NanNode) GetToken

func (n *NanNode) GetToken() *token.Token

GetToken returns token instance

func (*NanNode) GetValue

func (n *NanNode) GetValue() interface{}

GetValue returns math.NaN()

func (*NanNode) SetComment added in v1.4.5

func (n *NanNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*NanNode) String

func (n *NanNode) String() string

String returns .nan

func (*NanNode) Type

func (n *NanNode) Type() NodeType

Type returns NanType

type Node

type Node interface {
	// String node to text
	String() string
	// GetToken returns token instance
	GetToken() *token.Token
	// Type returns type of node
	Type() NodeType
	// AddColumn add column number to child nodes recursively
	AddColumn(int)
	// SetComment set comment token to node
	SetComment(*token.Token) error
	// Comment returns comment token instance
	GetComment() *token.Token
}

Node type of node

func Bool

func Bool(tk *token.Token) Node

Bool create node for boolean value

func Comment added in v1.4.5

func Comment(tk *token.Token) Node

Comment create node for comment

func Float

func Float(tk *token.Token) Node

Float create node for float value

func Infinity

func Infinity(tk *token.Token) Node

Infinity create node for .inf or -.inf value

func Integer

func Integer(tk *token.Token) Node

Integer create node for integer value

func MergeKey

func MergeKey(tk *token.Token) Node

MergeKey create node for merge key ( << )

func Nan

func Nan(tk *token.Token) Node

Nan create node for .nan value

func Null

func Null(tk *token.Token) Node

Null create node for null value

func String

func String(tk *token.Token) Node

String create node for string value

type NodeType

type NodeType int

NodeType type identifier of node

const (
	// UnknownNodeType type identifier for default
	UnknownNodeType NodeType = iota
	// DocumentType type identifier for document node
	DocumentType
	// NullType type identifier for null node
	NullType
	// BoolType type identifier for boolean node
	BoolType
	// IntegerType type identifier for integer node
	IntegerType
	// FloatType type identifier for float node
	FloatType
	// InfinityType type identifier for infinity node
	InfinityType
	// NanType type identifier for nan node
	NanType
	// StringType type identifier for string node
	StringType
	// MergeKeyType type identifier for merge key node
	MergeKeyType
	// LiteralType type identifier for literal node
	LiteralType
	// MappingType type identifier for mapping node
	MappingType
	// MappingValueType type identifier for mapping value node
	MappingValueType
	// SequenceType type identifier for sequence node
	SequenceType
	// AnchorType type identifier for anchor node
	AnchorType
	// AliasType type identifier for alias node
	AliasType
	// DirectiveType type identifier for directive node
	DirectiveType
	// TagType type identifier for tag node
	TagType
	// CommentType type identifier for comment node
	CommentType
)

func (NodeType) String

func (t NodeType) String() string

String node type identifier to text

type NullNode

type NullNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
}

NullNode type of null node

func (*NullNode) AddColumn added in v1.1.4

func (n *NullNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*NullNode) GetComment added in v1.4.5

func (n *NullNode) GetComment() *token.Token

GetComment returns comment token instance

func (*NullNode) GetToken

func (n *NullNode) GetToken() *token.Token

GetToken returns token instance

func (*NullNode) GetValue

func (n *NullNode) GetValue() interface{}

GetValue returns nil value

func (*NullNode) SetComment added in v1.4.5

func (n *NullNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*NullNode) String

func (n *NullNode) String() string

String returns `null` text

func (*NullNode) Type

func (n *NullNode) Type() NodeType

Type returns NullType

type ScalarNode

type ScalarNode interface {
	Node
	GetValue() interface{}
}

ScalarNode type for scalar node

type SequenceNode

type SequenceNode struct {
	Comment     *token.Token // position of Comment ( `#comment` )
	Start       *token.Token
	End         *token.Token
	IsFlowStyle bool
	Values      []Node
}

SequenceNode type of sequence node

func Sequence

func Sequence(tk *token.Token, isFlowStyle bool) *SequenceNode

Sequence create node for sequence

func (*SequenceNode) AddColumn added in v1.1.4

func (n *SequenceNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*SequenceNode) ArrayRange

func (n *SequenceNode) ArrayRange() *ArrayNodeIter

ArrayRange implements ArrayNode protocol

func (*SequenceNode) GetComment added in v1.4.5

func (n *SequenceNode) GetComment() *token.Token

GetComment returns comment token instance

func (*SequenceNode) GetToken

func (n *SequenceNode) GetToken() *token.Token

GetToken returns token instance

func (*SequenceNode) SetComment added in v1.4.5

func (n *SequenceNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*SequenceNode) String

func (n *SequenceNode) String() string

String sequence to text

func (*SequenceNode) Type

func (n *SequenceNode) Type() NodeType

Type returns SequenceType

type StringNode

type StringNode struct {
	ScalarNode
	Comment *token.Token // position of Comment ( `#comment` )
	Token   *token.Token
	Value   string
}

StringNode type of string node

func (*StringNode) AddColumn added in v1.1.4

func (n *StringNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*StringNode) GetComment added in v1.4.5

func (n *StringNode) GetComment() *token.Token

GetComment returns comment token instance

func (*StringNode) GetToken

func (n *StringNode) GetToken() *token.Token

GetToken returns token instance

func (*StringNode) GetValue

func (n *StringNode) GetValue() interface{}

GetValue returns string value

func (*StringNode) SetComment added in v1.4.5

func (n *StringNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*StringNode) String

func (n *StringNode) String() string

String string value to text with quote or literal header if required

func (*StringNode) Type

func (n *StringNode) Type() NodeType

Type returns StringType

type TagNode

type TagNode struct {
	Comment *token.Token // position of Comment ( `#comment` )
	Start   *token.Token
	Value   Node
}

TagNode type of tag node

func (*TagNode) AddColumn added in v1.1.4

func (n *TagNode) AddColumn(col int)

AddColumn add column number to child nodes recursively

func (*TagNode) GetComment added in v1.4.5

func (n *TagNode) GetComment() *token.Token

GetComment returns comment token instance

func (*TagNode) GetToken

func (n *TagNode) GetToken() *token.Token

GetToken returns token instance

func (*TagNode) SetComment added in v1.4.5

func (n *TagNode) SetComment(tk *token.Token) error

SetComment set comment token

func (*TagNode) String

func (n *TagNode) String() string

String tag to text

func (*TagNode) Type

func (n *TagNode) Type() NodeType

Type returns TagType

type Visitor

type Visitor interface {
	Visit(Node) Visitor
}

Visitor has Visit method that is invokded for each node encountered by Walk. If the result visitor w is not nil, Walk visits each of the children of node with the visitor w, followed by a call of w.Visit(nil).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL