Documentation ¶
Overview ¶
Package parse builds parse trees for expressions as defined by expr. Clients should use that package to construct expressions rather than this one, which provides shared internal data structures not intended for general use.
Index ¶
- func Walk(n Node, f func(Node))
- type BinaryNode
- type Func
- type FuncNode
- type Node
- type NodeType
- type Pos
- type ReturnType
- type ScalarNode
- type StringNode
- type Tree
- func (t *Tree) A() Node
- func (t *Tree) C() Node
- func (t *Tree) E() Node
- func (t *Tree) F() Node
- func (t *Tree) Func() (f *FuncNode)
- func (t *Tree) GetFunction(name string) (v Func, ok bool)
- func (t *Tree) M() Node
- func (t *Tree) O() Node
- func (t *Tree) P() Node
- func (t *Tree) Parse(text string, funcs ...map[string]Func) (err error)
- func (t *Tree) String() string
- func (t *Tree) Var() (v *VarNode)
- type UnaryNode
- type VarNode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BinaryNode ¶
BinaryNode holds two arguments and an operator.
func (*BinaryNode) Check ¶
func (b *BinaryNode) Check(t *Tree) error
Check performs parse time checking on the BinaryNode so it fulfills the Node interface.
func (*BinaryNode) Return ¶
func (b *BinaryNode) Return() ReturnType
Return returns the result type of the BinaryNode so it fulfills the Node interface.
func (*BinaryNode) String ¶
func (b *BinaryNode) String() string
String returns the string representation of the BinaryNode so it fulfills the Node interface.
func (*BinaryNode) StringAST ¶
func (b *BinaryNode) StringAST() string
StringAST returns the string representation of abstract syntax tree of the BinaryNode so it fulfills the Node interface.
type Func ¶
type Func struct { Args []ReturnType Return ReturnType F interface{} VariantReturn bool Check func(*Tree, *FuncNode) error }
Func holds the structure of a parsed function call.
type FuncNode ¶
FuncNode holds a function invocation.
func (*FuncNode) Check ¶
Check performs parse time checking on the FuncNode so it fulfills the Node interface.
func (*FuncNode) Return ¶
func (f *FuncNode) Return() ReturnType
Return returns the result type of the FuncNode so it fulfills the Node interface.
type Node ¶
type Node interface { Type() NodeType String() string StringAST() string Position() Pos // byte position of start of node in full original input string Check(*Tree) error // performs type checking for itself and sub-nodes Return() ReturnType // contains filtered or unexported methods }
A Node is an element in the parse tree. The interface is trivial. The interface contains an unexported method so that only types local to this package can satisfy it.
type NodeType ¶
type NodeType int
NodeType identifies the type of a parse tree node.
const ( // NodeFunc is a function call. NodeFunc NodeType = iota // NodeBinary is a binary operator: math, logical, compare NodeBinary // NodeUnary is unary operator: !, - NodeUnary // NodeString is string constant. NodeString // NodeNumber is a numerical constant (Scalar). NodeNumber // NodeVar is variable: $A NodeVar )
type Pos ¶
type Pos int
Pos represents a byte position in the original input text from which this template was parsed.
type ReturnType ¶
type ReturnType int
ReturnType represents the type that is returned from a node.
const ( // TypeString is a single string. TypeString ReturnType = iota // TypeScalar is a unlabled number constant. TypeScalar // TypeNumberSet is a collection of labelled numbers. TypeNumberSet // TypeSeriesSet is a collection of labelled time series. TypeSeriesSet // TypeVariantSet is a collection of the same type Number, Series, or Scalar. TypeVariantSet // TypeNoData is a no data response without a known data type. TypeNoData )
func (ReturnType) String ¶
func (f ReturnType) String() string
String returns a string representation of the ReturnType.
type ScalarNode ¶
type ScalarNode struct { NodeType Pos IsUint bool // Number has an unsigned integral value. IsFloat bool // Number has a floating-point value. Uint64 uint64 // The unsigned integer value. Float64 float64 // The floating-point value. Text string // The original textual representation from the input. }
ScalarNode holds a number: signed or unsigned integer or float. The value is parsed and stored under all the types that can represent the value. This simulates in a small amount of code the behavior of Go's ideal constants.
func (*ScalarNode) Check ¶
func (n *ScalarNode) Check(*Tree) error
Check performs parse time checking on the ScalarNode so it fulfills the Node interface.
func (*ScalarNode) Return ¶
func (n *ScalarNode) Return() ReturnType
Return returns the result type of the ScalarNode so it fulfills the Node interface.
func (*ScalarNode) String ¶
func (n *ScalarNode) String() string
String returns the string representation of the ScalarNode so it fulfills the Node interface.
func (*ScalarNode) StringAST ¶
func (n *ScalarNode) StringAST() string
StringAST returns the string representation of abstract syntax tree of the ScalarNode so it fulfills the Node interface.
type StringNode ¶
type StringNode struct { NodeType Pos Quoted string // The original text of the string, with quotes. Text string // The string, after quote processing. }
StringNode holds a string constant. The value has been "unquoted".
func (*StringNode) Check ¶
func (s *StringNode) Check(*Tree) error
Check performs parse time checking on the StringNode so it fulfills the Node interface.
func (*StringNode) Return ¶
func (s *StringNode) Return() ReturnType
Return returns the result type of the TypeString so it fulfills the Node interface.
func (*StringNode) String ¶
func (s *StringNode) String() string
String returns the string representation of the StringNode so it fulfills the Node interface.
func (*StringNode) StringAST ¶
func (s *StringNode) StringAST() string
StringAST returns the string representation of abstract syntax tree of the StringNode so it fulfills the Node interface.
type Tree ¶
type Tree struct { Text string // text parsed to create the expression. Root Node // top-level root of the tree, returns a number. VarNames []string // contains filtered or unexported fields }
Tree is the representation of a single parsed expression.
func Parse ¶
Parse returns a Tree, created by parsing the expression described in the argument string. If an error is encountered, parsing stops and an empty Tree is returned with the error.
func (*Tree) GetFunction ¶
GetFunction gets a parsed Func from the functions available on the tree's func property.
func (*Tree) Parse ¶
Parse parses the expression definition string to construct a representation of the expression for execution.
type UnaryNode ¶
UnaryNode holds one argument and an operator.
func (*UnaryNode) Check ¶
Check performs parse time checking on the UnaryNode so it fulfills the Node interface.
func (*UnaryNode) Return ¶
func (u *UnaryNode) Return() ReturnType
Return returns the result type of the UnaryNode so it fulfills the Node interface.
type VarNode ¶
VarNode holds a variable reference.
func (*VarNode) Check ¶
Check performs parse time checking on the VarNode so it fulfills the Node interface.
func (*VarNode) Return ¶
func (n *VarNode) Return() ReturnType
Return returns the result type of the VarNode so it fulfills the Node interface.
func (*VarNode) String ¶
String returns the string representation of the VarNode so it fulfills the Node interface.