ast

package
v1.5.2 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2020 License: MIT Imports: 6 Imported by: 62

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