ast

package
v0.171.0 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2022 License: MIT Imports: 10 Imported by: 48

Documentation

Overview

Package ast declares the types used to represent the syntax tree for Flux source code.

Index

Constants

View Source
const (
	NanosecondUnit  = "ns"
	MicrosecondUnit = "us"
	MillisecondUnit = "ms"
	SecondUnit      = "s"
	MinuteUnit      = "m"
	HourUnit        = "h"
	DayUnit         = "d"
	WeekUnit        = "w"
	MonthUnit       = "mo"
	YearUnit        = "y"
)

Variables

View Source
var LogicalOperatorTokens = map[LogicalOperatorKind]string{
	AndOperator: "and",
	OrOperator:  "or",
}

LogicalOperatorTokens converts LogicalOperatorKind to string

OperatorTokens converts OperatorKind to string

Functions

func BooleanFromLiteral added in v0.75.0

func BooleanFromLiteral(lit *BooleanLiteral) bool

func Check added in v0.13.0

func Check(root Node) int

Check will inspect each node and annotate it with any AST errors. It will return the number of errors that were found.

func DateTimeFromLiteral added in v0.75.0

func DateTimeFromLiteral(lit *DateTimeLiteral) time.Time

func DurationFrom added in v0.21.0

func DurationFrom(l *DurationLiteral, _ time.Time) (time.Duration, error)

Duration gives you a DurationLiteral from a time.Duration. Currently this is an approximation, but since we accept time, it can be made exact. TODO: makes this exact and not an approximation. currently the time.Time is ignored

func FloatFromLiteral added in v0.75.0

func FloatFromLiteral(lit *FloatLiteral) float64

func GetError added in v0.13.0

func GetError(n Node) error

GetError will return the first error within an AST.

func GetErrors added in v0.13.0

func GetErrors(n Node) (errs []error)

GetErrors will return each of the errors within an AST.

func IntegerFromLiteral added in v0.75.0

func IntegerFromLiteral(lit *IntegerLiteral) int64

func PrintErrors added in v0.13.0

func PrintErrors(w io.Writer, root Node)

PrintErrors will format the errors within the AST and output them to the writer.

func RegexpFromLiteral added in v0.75.0

func RegexpFromLiteral(lit *RegexpLiteral) *regexp.Regexp

func StringFromLiteral added in v0.75.0

func StringFromLiteral(lit *StringLiteral) string

func UnsignedIntegerFromLiteral added in v0.75.0

func UnsignedIntegerFromLiteral(lit *UnsignedIntegerLiteral) uint64

func Visit added in v0.13.0

func Visit(node Node, f func(Node))

func Walk added in v0.8.0

func Walk(v Visitor, node Node)

Walk recursively visits every children of a given `Node` given a `Visitor`. It performs a pre-order visit of the AST (visit parent node, then visit children from left to right). If a call to `Visit` for a node returns a nil visitor, walk stops and doesn't visit the AST rooted at that node, otherwise it uses the returned visitor to continue walking. Once Walk has finished visiting a node (the node itself and its children), it invokes `Done` on the node's visitor. NOTE: `Walk` doesn't visit `nil` nodes.

Types

type ArrayExpression

type ArrayExpression struct {
	BaseNode
	Lbrack   []Comment    `json:"lbrack,omitempty"`
	Elements []Expression `json:"elements"`
	Rbrack   []Comment    `json:"rbrack,omitempty"`
}

ArrayExpression is used to create and directly specify the elements of an array object

func (*ArrayExpression) Copy

func (e *ArrayExpression) Copy() Node

func (*ArrayExpression) MarshalJSON

func (e *ArrayExpression) MarshalJSON() ([]byte, error)

func (*ArrayExpression) Type

func (*ArrayExpression) Type() string

Type is the abstract type

func (*ArrayExpression) UnmarshalJSON

func (e *ArrayExpression) UnmarshalJSON(data []byte) error

type ArrayItem added in v0.113.0

type ArrayItem struct {
	Expression
	Comma []Comment `json:"comma,omitempty"`
}

ArrayExpr is used to create and directly specify the elements of an array object

type ArrayType added in v0.77.1

type ArrayType struct {
	BaseNode
	ElementType MonoType `json:"element"`
}

func (*ArrayType) Copy added in v0.81.0

func (c *ArrayType) Copy() Node

func (ArrayType) MarshalJSON added in v0.81.0

func (arr ArrayType) MarshalJSON() ([]byte, error)

func (ArrayType) Type added in v0.77.1

func (ArrayType) Type() string

func (*ArrayType) UnmarshalJSON added in v0.81.0

func (nt *ArrayType) UnmarshalJSON(data []byte) error

type Assignment added in v0.14.0

type Assignment interface {
	Statement
	// contains filtered or unexported methods
}

type BadStatement added in v0.13.0

type BadStatement struct {
	BaseNode
	Text string `json:"text"`
}

BadStatement is a placeholder for statements for which no correct statement nodes can be created.

func (*BadStatement) Copy added in v0.13.0

func (s *BadStatement) Copy() Node

func (*BadStatement) MarshalJSON added in v0.13.0

func (s *BadStatement) MarshalJSON() ([]byte, error)

func (*BadStatement) Type added in v0.13.0

func (*BadStatement) Type() string

Type is the abstract type.

type BaseNode

type BaseNode struct {
	Loc      *SourceLocation `json:"location,omitempty"`
	Errors   []Error         `json:"errors,omitempty"`
	Comments []Comment       `json:"comments,omitempty"`
}

BaseNode holds the attributes every expression or statement should have

func (BaseNode) CommentList added in v0.112.1

func (b BaseNode) CommentList() []Comment

func (BaseNode) Copy added in v0.13.0

func (b BaseNode) Copy() BaseNode

func (BaseNode) Errs added in v0.13.0

func (b BaseNode) Errs() []Error

func (BaseNode) Location

func (b BaseNode) Location() SourceLocation

Location is the source location of the Node

type BinaryExpression

type BinaryExpression struct {
	BaseNode
	Operator OperatorKind `json:"operator"`
	Left     Expression   `json:"left"`
	Right    Expression   `json:"right"`
}

BinaryExpression use binary operators act on two operands in an expression. BinaryExpression includes relational and arithmetic operators

func (*BinaryExpression) Copy

func (e *BinaryExpression) Copy() Node

func (*BinaryExpression) MarshalJSON

func (e *BinaryExpression) MarshalJSON() ([]byte, error)

func (*BinaryExpression) Type

func (*BinaryExpression) Type() string

Type is the abstract type

func (*BinaryExpression) UnmarshalJSON

func (e *BinaryExpression) UnmarshalJSON(data []byte) error

type Block added in v0.8.0

type Block struct {
	BaseNode
	Lbrace []Comment   `json:"lbrace,omitempty"`
	Body   []Statement `json:"body"`
	Rbrace []Comment   `json:"rbrace,omitempty"`
}

Block is a set of statements

func (*Block) Copy added in v0.8.0

func (s *Block) Copy() Node

func (*Block) MarshalJSON added in v0.8.0

func (s *Block) MarshalJSON() ([]byte, error)

func (*Block) Type added in v0.8.0

func (*Block) Type() string

Type is the abstract type

func (*Block) UnmarshalJSON added in v0.8.0

func (s *Block) UnmarshalJSON(data []byte) error

type BooleanLiteral

type BooleanLiteral struct {
	BaseNode
	Value bool `json:"value"`
}

BooleanLiteral represent boolean values

func BooleanLiteralFromValue added in v0.75.0

func BooleanLiteralFromValue(v bool) *BooleanLiteral

func (*BooleanLiteral) Copy

func (l *BooleanLiteral) Copy() Node

func (*BooleanLiteral) MarshalJSON

func (l *BooleanLiteral) MarshalJSON() ([]byte, error)

func (*BooleanLiteral) Type

func (*BooleanLiteral) Type() string

Type is the abstract type

type BuiltinStatement added in v0.14.0

type BuiltinStatement struct {
	BaseNode
	Colon []Comment      `json:"colon,omitempty"`
	ID    *Identifier    `json:"id"`
	Ty    TypeExpression `json:"ty"`
}

BuiltinStatement declares a builtin identifier and its type

func (*BuiltinStatement) Copy added in v0.14.0

func (s *BuiltinStatement) Copy() Node

Copy returns a deep copy of an BuiltinStatement Node

func (*BuiltinStatement) MarshalJSON added in v0.14.0

func (s *BuiltinStatement) MarshalJSON() ([]byte, error)

func (*BuiltinStatement) Type added in v0.14.0

func (*BuiltinStatement) Type() string

Type is the abstract type

func (*BuiltinStatement) UnmarshalJSON added in v0.83.0

func (d *BuiltinStatement) UnmarshalJSON(data []byte) error

type CallExpression

type CallExpression struct {
	BaseNode
	Callee    Expression   `json:"callee"`
	Lparen    []Comment    `json:"lparen,omitempty"`
	Arguments []Expression `json:"arguments,omitempty"`
	Rparen    []Comment    `json:"rparen,omitempty"`
}

CallExpression represents a function call

func (*CallExpression) Copy

func (e *CallExpression) Copy() Node

func (*CallExpression) MarshalJSON

func (e *CallExpression) MarshalJSON() ([]byte, error)

func (*CallExpression) Type

func (*CallExpression) Type() string

Type is the abstract type

func (*CallExpression) UnmarshalJSON

func (e *CallExpression) UnmarshalJSON(data []byte) error

type Comment added in v0.112.1

type Comment struct {
	Text string `json:"text"`
}

type ConditionalExpression

type ConditionalExpression struct {
	BaseNode
	Tk_if      []Comment  `json:"tk_if,omitempty"`
	Test       Expression `json:"test"`
	Tk_then    []Comment  `json:"tk_then,omitempty"`
	Consequent Expression `json:"consequent"`
	Tk_else    []Comment  `json:"tk_else,omitempty"`
	Alternate  Expression `json:"alternate"`
}

ConditionalExpression selects one of two expressions, `Alternate` or `Consequent` depending on a third, boolean, expression, `Test`.

func (*ConditionalExpression) Copy

func (e *ConditionalExpression) Copy() Node

func (*ConditionalExpression) MarshalJSON

func (e *ConditionalExpression) MarshalJSON() ([]byte, error)

func (*ConditionalExpression) Type

func (*ConditionalExpression) Type() string

Type is the abstract type

func (*ConditionalExpression) UnmarshalJSON

func (e *ConditionalExpression) UnmarshalJSON(data []byte) error

type DateTimeLiteral

type DateTimeLiteral struct {
	BaseNode
	Value time.Time `json:"value"`
}

DateTimeLiteral represents an instant in time with nanosecond precision using the syntax of golang's RFC3339 Nanosecond variant TODO: this may be better as a class initialization

func DateTimeLiteralFromValue added in v0.75.0

func DateTimeLiteralFromValue(v time.Time) *DateTimeLiteral

func (*DateTimeLiteral) Copy

func (l *DateTimeLiteral) Copy() Node

func (*DateTimeLiteral) MarshalJSON

func (l *DateTimeLiteral) MarshalJSON() ([]byte, error)

func (*DateTimeLiteral) Type

func (*DateTimeLiteral) Type() string

Type is the abstract type

type DictExpression added in v0.99.0

type DictExpression struct {
	BaseNode
	Lbrack   []Comment   `json:"lbrack,omitempty"`
	Elements []*DictItem `json:"elements"`
	Rbrack   []Comment   `json:"rbrack,omitempty"`
}

DictExpression represents dictionary literals

func (*DictExpression) Copy added in v0.99.0

func (e *DictExpression) Copy() Node

func (*DictExpression) MarshalJSON added in v0.99.0

func (e *DictExpression) MarshalJSON() ([]byte, error)

func (*DictExpression) Type added in v0.99.0

func (*DictExpression) Type() string

Type is the abstract type

func (*DictExpression) UnmarshalJSON added in v0.99.0

func (e *DictExpression) UnmarshalJSON(data []byte) error

type DictItem added in v0.99.0

type DictItem struct {
	Key   Expression `json:"key"`
	Val   Expression `json:"val"`
	Comma []Comment  `json:"comma,omitempty"`
}

DictItem represents a key value pair of a dictionary literal

func (*DictItem) MarshalJSON added in v0.99.0

func (item *DictItem) MarshalJSON() ([]byte, error)

func (*DictItem) Type added in v0.99.0

func (*DictItem) Type() string

func (*DictItem) UnmarshalJSON added in v0.99.0

func (item *DictItem) UnmarshalJSON(data []byte) error

type DictType added in v0.97.0

type DictType struct {
	BaseNode
	KeyType   MonoType `json:"key"`
	ValueType MonoType `json:"val"`
}

func (*DictType) Copy added in v0.97.0

func (c *DictType) Copy() Node

func (DictType) MarshalJSON added in v0.97.0

func (c DictType) MarshalJSON() ([]byte, error)

func (DictType) Type added in v0.97.0

func (DictType) Type() string

func (*DictType) UnmarshalJSON added in v0.97.0

func (c *DictType) UnmarshalJSON(data []byte) error

type Duration

type Duration struct {
	Magnitude int64  `json:"magnitude"`
	Unit      string `json:"unit"`
}

Duration is a pair consisting of length of time and the unit of time measured. It is the atomic unit from which all duration literals are composed.

type DurationLiteral

type DurationLiteral struct {
	BaseNode
	Values []Duration `json:"values"`
}

DurationLiteral represents the elapsed time between two instants as an int64 nanosecond count with syntax of golang's time.Duration TODO: this may be better as a class initialization

func (*DurationLiteral) Copy

func (l *DurationLiteral) Copy() Node

func (*DurationLiteral) MarshalJSON

func (l *DurationLiteral) MarshalJSON() ([]byte, error)

func (*DurationLiteral) String added in v0.137.0

func (n *DurationLiteral) String() string

String implements fmt.Stringer by returning the duration formatted as its Flux representation.

func (*DurationLiteral) Type

func (*DurationLiteral) Type() string

Type is the abstract type

type Error added in v0.13.0

type Error struct {
	Msg string `json:"msg"`
}

Error represents an error in the AST construction. The node that this is attached to is not valid.

func (Error) Error added in v0.13.0

func (e Error) Error() string

type Expression

type Expression interface {
	Node
	// contains filtered or unexported methods
}

Expression represents an action that can be performed by InfluxDB that can be evaluated to a value.

type ExpressionStatement

type ExpressionStatement struct {
	BaseNode
	Expression Expression `json:"expression"`
}

ExpressionStatement may consist of an expression that does not return a value and is executed solely for its side-effects.

func (*ExpressionStatement) Copy

func (s *ExpressionStatement) Copy() Node

func (*ExpressionStatement) MarshalJSON

func (s *ExpressionStatement) MarshalJSON() ([]byte, error)

func (*ExpressionStatement) Type

func (*ExpressionStatement) Type() string

Type is the abstract type

func (*ExpressionStatement) UnmarshalJSON

func (s *ExpressionStatement) UnmarshalJSON(data []byte) error

type File added in v0.13.0

type File struct {
	BaseNode
	Name     string               `json:"name,omitempty"` // name of the file
	Metadata string               `json:"metadata,omitempty"`
	Package  *PackageClause       `json:"package"`
	Imports  []*ImportDeclaration `json:"imports"`
	Body     []Statement          `json:"body"`
	Eof      []Comment            `json:"eof,omitempty"`
}

File represents a source from a single file

func (*File) Copy added in v0.13.0

func (f *File) Copy() Node

func (*File) MarshalJSON added in v0.13.0

func (f *File) MarshalJSON() ([]byte, error)

func (*File) Type added in v0.13.0

func (*File) Type() string

Type is the abstract type

func (*File) UnmarshalJSON added in v0.13.0

func (f *File) UnmarshalJSON(data []byte) error

type FloatLiteral

type FloatLiteral struct {
	BaseNode
	Value float64 `json:"value"`
}

FloatLiteral represent floating point numbers according to the double representations defined by the IEEE-754-1985

func FloatLiteralFromValue added in v0.75.0

func FloatLiteralFromValue(v float64) *FloatLiteral

func (*FloatLiteral) Copy

func (l *FloatLiteral) Copy() Node

func (*FloatLiteral) MarshalJSON

func (l *FloatLiteral) MarshalJSON() ([]byte, error)

func (*FloatLiteral) Type

func (*FloatLiteral) Type() string

Type is the abstract type

type FunctionExpression added in v0.8.0

type FunctionExpression struct {
	BaseNode
	Lparen []Comment   `json:"lparen,omitempty"`
	Params []*Property `json:"params"`
	Rparan []Comment   `json:"rparen,omitempty"`
	Arrow  []Comment   `json:"arrow,omitempty"`
	Body   Node        `json:"body"`
}

func (*FunctionExpression) Copy added in v0.8.0

func (e *FunctionExpression) Copy() Node

func (*FunctionExpression) MarshalJSON added in v0.8.0

func (e *FunctionExpression) MarshalJSON() ([]byte, error)

func (*FunctionExpression) Type added in v0.8.0

func (*FunctionExpression) Type() string

Type is the abstract type

func (*FunctionExpression) UnmarshalJSON added in v0.8.0

func (e *FunctionExpression) UnmarshalJSON(data []byte) error

type FunctionType added in v0.77.1

type FunctionType struct {
	BaseNode
	Parameters []*ParameterType `json:"parameters"`
	Return     MonoType         `json:"monotype"`
}

func (*FunctionType) Copy added in v0.81.0

func (c *FunctionType) Copy() Node

func (FunctionType) MarshalJSON added in v0.81.0

func (fun FunctionType) MarshalJSON() ([]byte, error)

func (FunctionType) Type added in v0.77.1

func (FunctionType) Type() string

func (*FunctionType) UnmarshalJSON added in v0.81.0

func (param *FunctionType) UnmarshalJSON(data []byte) error

type Identifier

type Identifier struct {
	BaseNode
	Name string `json:"name"`
}

Identifier represents a name that identifies a unique Node

func (*Identifier) Copy

func (i *Identifier) Copy() Node

func (*Identifier) Key added in v0.12.0

func (i *Identifier) Key() string

Identifiers are valid object keys

func (*Identifier) MarshalJSON

func (i *Identifier) MarshalJSON() ([]byte, error)

func (*Identifier) Type

func (*Identifier) Type() string

Type is the abstract type

func (*Identifier) UnmarshalJSON added in v0.81.0

func (i *Identifier) UnmarshalJSON(data []byte) error

type ImportDeclaration added in v0.8.0

type ImportDeclaration struct {
	BaseNode
	As   *Identifier    `json:"as"`
	Path *StringLiteral `json:"path"`
}

ImportDeclaration declares a single import

func (*ImportDeclaration) Copy added in v0.8.0

func (d *ImportDeclaration) Copy() Node

func (*ImportDeclaration) MarshalJSON added in v0.8.0

func (d *ImportDeclaration) MarshalJSON() ([]byte, error)

func (*ImportDeclaration) Type added in v0.8.0

func (*ImportDeclaration) Type() string

Type is the abstract type

type IndexExpression added in v0.7.1

type IndexExpression struct {
	BaseNode
	Array  Expression `json:"array"`
	Lbrack []Comment  `json:"lbrack,omitempty"`
	Index  Expression `json:"index"`
	Rbrack []Comment  `json:"rbrack,omitempty"`
}

IndexExpression represents indexing into an array

func (*IndexExpression) Copy added in v0.7.1

func (e *IndexExpression) Copy() Node

func (*IndexExpression) MarshalJSON added in v0.7.1

func (e *IndexExpression) MarshalJSON() ([]byte, error)

func (*IndexExpression) Type added in v0.7.1

func (*IndexExpression) Type() string

func (*IndexExpression) UnmarshalJSON added in v0.7.1

func (e *IndexExpression) UnmarshalJSON(data []byte) error

type IntegerLiteral

type IntegerLiteral struct {
	BaseNode
	Value int64 `json:"value"`
}

IntegerLiteral represent integer numbers.

func IntegerLiteralFromValue added in v0.75.0

func IntegerLiteralFromValue(v int64) *IntegerLiteral

func (*IntegerLiteral) Copy

func (l *IntegerLiteral) Copy() Node

func (*IntegerLiteral) MarshalJSON

func (l *IntegerLiteral) MarshalJSON() ([]byte, error)

func (*IntegerLiteral) Type

func (*IntegerLiteral) Type() string

Type is the abstract type

func (*IntegerLiteral) UnmarshalJSON

func (l *IntegerLiteral) UnmarshalJSON(data []byte) error

type InterpolatedPart added in v0.40.0

type InterpolatedPart struct {
	BaseNode
	Expression Expression `json:"expression"`
}

func (*InterpolatedPart) Copy added in v0.40.0

func (p *InterpolatedPart) Copy() Node

func (*InterpolatedPart) MarshalJSON added in v0.40.0

func (p *InterpolatedPart) MarshalJSON() ([]byte, error)

func (*InterpolatedPart) Type added in v0.40.0

func (*InterpolatedPart) Type() string

func (*InterpolatedPart) UnmarshalJSON added in v0.40.0

func (p *InterpolatedPart) UnmarshalJSON(data []byte) error

type Literal

type Literal interface {
	Expression
	// contains filtered or unexported methods
}

Literal is the lexical form for a literal expression which defines boolean, string, integer, number, duration, datetime or field values. Literals must be coerced explicitly.

type LogicalExpression

type LogicalExpression struct {
	BaseNode
	Operator LogicalOperatorKind `json:"operator"`
	Left     Expression          `json:"left"`
	Right    Expression          `json:"right"`
}

LogicalExpression represent the rule conditions that collectively evaluate to either true or false. `or` expressions compute the disjunction of two boolean expressions and return boolean values. `and“ expressions compute the conjunction of two boolean expressions and return boolean values.

func (*LogicalExpression) Copy

func (e *LogicalExpression) Copy() Node

func (*LogicalExpression) MarshalJSON

func (e *LogicalExpression) MarshalJSON() ([]byte, error)

func (*LogicalExpression) Type

func (*LogicalExpression) Type() string

Type is the abstract type

func (*LogicalExpression) UnmarshalJSON

func (e *LogicalExpression) UnmarshalJSON(data []byte) error

type LogicalOperatorKind

type LogicalOperatorKind int

LogicalOperatorKind are used with boolean (logical) values

const (
	AndOperator LogicalOperatorKind
	OrOperator
)

func LogicalOperatorLookup

func LogicalOperatorLookup(op string) LogicalOperatorKind

LogicalOperatorLookup converts the operators to LogicalOperatorKind

func (LogicalOperatorKind) MarshalText

func (o LogicalOperatorKind) MarshalText() ([]byte, error)

func (LogicalOperatorKind) String

func (o LogicalOperatorKind) String() string

func (*LogicalOperatorKind) UnmarshalText

func (o *LogicalOperatorKind) UnmarshalText(data []byte) error

type MemberAssignment added in v0.14.0

type MemberAssignment struct {
	BaseNode
	Member *MemberExpression `json:"member"`
	Init   Expression        `json:"init"`
}

func (*MemberAssignment) Copy added in v0.14.0

func (a *MemberAssignment) Copy() Node

func (*MemberAssignment) MarshalJSON added in v0.14.0

func (a *MemberAssignment) MarshalJSON() ([]byte, error)

func (*MemberAssignment) Type added in v0.14.0

func (*MemberAssignment) Type() string

func (*MemberAssignment) UnmarshalJSON added in v0.14.0

func (a *MemberAssignment) UnmarshalJSON(data []byte) error

type MemberExpression

type MemberExpression struct {
	BaseNode
	Object   Expression  `json:"object"`
	Lbrack   []Comment   `json:"lbrack,omitempty"`
	Property PropertyKey `json:"property"`
	Rbrack   []Comment   `json:"rbrack,omitempty"`
}

MemberExpression represents calling a property of a CallExpression

func (*MemberExpression) Copy

func (e *MemberExpression) Copy() Node

func (*MemberExpression) MarshalJSON

func (e *MemberExpression) MarshalJSON() ([]byte, error)

func (*MemberExpression) Type

func (*MemberExpression) Type() string

Type is the abstract type

func (*MemberExpression) UnmarshalJSON

func (e *MemberExpression) UnmarshalJSON(data []byte) error

type MonoType added in v0.77.1

type MonoType interface {
	Node
	// contains filtered or unexported methods
}

type NamedType added in v0.77.1

type NamedType struct {
	BaseNode
	ID *Identifier `json:"name"`
}

func (*NamedType) Copy added in v0.81.0

func (nt *NamedType) Copy() Node

func (NamedType) MarshalJSON added in v0.81.0

func (nt NamedType) MarshalJSON() ([]byte, error)

new types for builtin package

func (NamedType) Type added in v0.77.1

func (NamedType) Type() string

func (*NamedType) UnmarshalJSON added in v0.81.0

func (nt *NamedType) UnmarshalJSON(data []byte) error

type Node

type Node interface {
	Type() string // Type property is a string that contains the variant type of the node
	Location() SourceLocation
	Errs() []Error
	CommentList() []Comment
	Copy() Node

	// All node must support json marshalling
	json.Marshaler
	// contains filtered or unexported methods
}

Node represents a node in the InfluxDB abstract syntax tree.

func UnmarshalNode

func UnmarshalNode(data []byte) (Node, error)

type ObjectExpression

type ObjectExpression struct {
	BaseNode
	Lbrace     []Comment   `json:"lbrace,omitempty"`
	With       *Identifier `json:"with,omitempty"`
	Properties []*Property `json:"properties"`
	Rbrace     []Comment   `json:"rbrace,omitempty"`
}

ObjectExpression allows the declaration of an anonymous object within a declaration.

func (*ObjectExpression) Copy

func (e *ObjectExpression) Copy() Node

func (*ObjectExpression) MarshalJSON

func (e *ObjectExpression) MarshalJSON() ([]byte, error)

func (*ObjectExpression) Type

func (*ObjectExpression) Type() string

Type is the abstract type

type OperatorKind

type OperatorKind int

OperatorKind are Equality and Arithmatic operators. Result of evaluating an equality operator is always of type Boolean based on whether the comparison is true Arithmetic operators take numerical values (either literals or variables) as their operands

and return a single numerical value.
const (
	MultiplicationOperator OperatorKind
	DivisionOperator
	ModuloOperator
	PowerOperator
	AdditionOperator
	SubtractionOperator
	LessThanEqualOperator
	LessThanOperator
	GreaterThanEqualOperator
	GreaterThanOperator
	StartsWithOperator
	InOperator
	NotOperator
	ExistsOperator
	NotEmptyOperator
	EmptyOperator
	EqualOperator
	NotEqualOperator
	RegexpMatchOperator
	NotRegexpMatchOperator
)

func OperatorLookup

func OperatorLookup(op string) OperatorKind

OperatorLookup converts the operators to OperatorKind

func (OperatorKind) MarshalText

func (o OperatorKind) MarshalText() ([]byte, error)

func (OperatorKind) String

func (o OperatorKind) String() string

func (*OperatorKind) UnmarshalText

func (o *OperatorKind) UnmarshalText(data []byte) error

type OptionStatement

type OptionStatement struct {
	BaseNode
	Assignment Assignment `json:"assignment"`
}

OptionStatement syntactically is a single variable declaration

func (*OptionStatement) Copy

func (s *OptionStatement) Copy() Node

Copy returns a deep copy of an OptionStatement Node

func (*OptionStatement) MarshalJSON

func (s *OptionStatement) MarshalJSON() ([]byte, error)

func (*OptionStatement) Type

func (*OptionStatement) Type() string

Type is the abstract type

func (*OptionStatement) UnmarshalJSON added in v0.14.0

func (s *OptionStatement) UnmarshalJSON(data []byte) error

type Package added in v0.13.0

type Package struct {
	BaseNode
	Path    string  `json:"path,omitempty"`
	Package string  `json:"package"`
	Files   []*File `json:"files"`
}

Package represents a complete package source tree

func (*Package) Copy added in v0.13.0

func (p *Package) Copy() Node

func (*Package) MarshalJSON added in v0.13.0

func (p *Package) MarshalJSON() ([]byte, error)

func (*Package) Type added in v0.13.0

func (*Package) Type() string

Type is the abstract type

type PackageClause added in v0.8.0

type PackageClause struct {
	BaseNode
	Name *Identifier `json:"name"`
}

PackageClause defines the current package identifier.

func (*PackageClause) Copy added in v0.8.0

func (c *PackageClause) Copy() Node

func (*PackageClause) MarshalJSON added in v0.8.0

func (c *PackageClause) MarshalJSON() ([]byte, error)

func (*PackageClause) Type added in v0.8.0

func (*PackageClause) Type() string

Type is the abstract type

type ParameterKind added in v0.77.1

type ParameterKind string
const (
	Required ParameterKind = "Required"
	Optional ParameterKind = "Optional"
	Pipe     ParameterKind = "Pipe"
)

type ParameterType added in v0.77.1

type ParameterType struct {
	BaseNode
	Name *Identifier   `json:"name,omitempty"`
	Ty   MonoType      `json:"monotype"`
	Kind ParameterKind `json:"-"`
}

func (*ParameterType) Copy added in v0.81.0

func (c *ParameterType) Copy() Node

func (ParameterType) MarshalJSON added in v0.81.0

func (param ParameterType) MarshalJSON() ([]byte, error)

func (*ParameterType) Type added in v0.77.1

func (p *ParameterType) Type() string

func (*ParameterType) UnmarshalJSON added in v0.81.0

func (param *ParameterType) UnmarshalJSON(data []byte) error

type ParenExpression added in v0.47.0

type ParenExpression struct {
	BaseNode
	Lparen     []Comment  `json:"lparen,omitempty"`
	Expression Expression `json:"expression"`
	Rparen     []Comment  `json:"rparen,omitempty"`
}

ParenExpression represents an expressions that is wrapped in parentheses in the source code. It has no semantic meaning, rather it only communicates information about the syntax of the source code.

func (*ParenExpression) Copy added in v0.47.0

func (e *ParenExpression) Copy() Node

func (*ParenExpression) MarshalJSON added in v0.47.0

func (e *ParenExpression) MarshalJSON() ([]byte, error)

func (*ParenExpression) Type added in v0.47.0

func (*ParenExpression) Type() string

func (*ParenExpression) UnmarshalJSON added in v0.47.0

func (e *ParenExpression) UnmarshalJSON(data []byte) error

type PipeExpression

type PipeExpression struct {
	BaseNode
	Argument Expression      `json:"argument"`
	Call     *CallExpression `json:"call"`
}

func (*PipeExpression) Copy

func (e *PipeExpression) Copy() Node

func (*PipeExpression) MarshalJSON

func (e *PipeExpression) MarshalJSON() ([]byte, error)

func (*PipeExpression) Type

func (*PipeExpression) Type() string

Type is the abstract type

func (*PipeExpression) UnmarshalJSON

func (e *PipeExpression) UnmarshalJSON(data []byte) error

type PipeLiteral

type PipeLiteral struct {
	BaseNode
}

PipeLiteral represents an specialized literal value, indicating the left hand value of a pipe expression.

func (*PipeLiteral) Copy

func (p *PipeLiteral) Copy() Node

func (*PipeLiteral) MarshalJSON

func (p *PipeLiteral) MarshalJSON() ([]byte, error)

func (*PipeLiteral) Type

func (*PipeLiteral) Type() string

Type is the abstract type

type Position

type Position struct {
	Line   int `json:"line"`   // Line is the line in the source marked by this position
	Column int `json:"column"` // Column is the column in the source marked by this position
}

Position represents a specific location in the source

func (Position) IsValid added in v0.13.0

func (p Position) IsValid() bool

func (Position) Less

func (p Position) Less(o Position) bool

func (Position) String

func (p Position) String() string

type Property

type Property struct {
	BaseNode
	Key       PropertyKey `json:"key"`
	Separator []Comment   `json:"separator,omitempty"`
	Value     Expression  `json:"value"`
	Comma     []Comment   `json:"comma,omitempty"`
}

Property is the value associated with a key. A property's key can be either an identifier or string literal.

func (*Property) Copy

func (p *Property) Copy() Node

func (*Property) MarshalJSON

func (p *Property) MarshalJSON() ([]byte, error)

func (*Property) Type

func (*Property) Type() string

Type is the abstract type

func (*Property) UnmarshalJSON

func (p *Property) UnmarshalJSON(data []byte) error

type PropertyKey added in v0.12.0

type PropertyKey interface {
	Node
	Key() string
}

PropertyKey represents an object key

type PropertyType added in v0.77.1

type PropertyType struct {
	BaseNode
	Name *Identifier `json:"name"`
	Ty   MonoType    `json:"monotype"`
}

func (*PropertyType) Copy added in v0.81.0

func (c *PropertyType) Copy() Node

func (PropertyType) MarshalJSON added in v0.81.0

func (prop PropertyType) MarshalJSON() ([]byte, error)

func (PropertyType) Type added in v0.77.1

func (PropertyType) Type() string

func (*PropertyType) UnmarshalJSON added in v0.81.0

func (nt *PropertyType) UnmarshalJSON(data []byte) error

type RecordType added in v0.77.1

type RecordType struct {
	BaseNode
	Properties []*PropertyType `json:"properties"`
	Tvar       *Identifier     `json:"tvar,omitempty"`
}

func (*RecordType) Copy added in v0.81.0

func (c *RecordType) Copy() Node

func (RecordType) MarshalJSON added in v0.81.0

func (rec RecordType) MarshalJSON() ([]byte, error)

func (RecordType) Type added in v0.77.1

func (RecordType) Type() string

type RegexpLiteral

type RegexpLiteral struct {
	BaseNode
	Value *regexp.Regexp `json:"value"`
}

RegexpLiteral expressions begin and end with `/` and are regular expressions with syntax accepted by RE2

func RegexpLiteralFromValue added in v0.75.0

func RegexpLiteralFromValue(v *regexp.Regexp) *RegexpLiteral

func (*RegexpLiteral) Copy

func (l *RegexpLiteral) Copy() Node

func (*RegexpLiteral) MarshalJSON

func (l *RegexpLiteral) MarshalJSON() ([]byte, error)

func (*RegexpLiteral) Type

func (*RegexpLiteral) Type() string

Type is the abstract type

func (*RegexpLiteral) UnmarshalJSON

func (l *RegexpLiteral) UnmarshalJSON(data []byte) error

type ReturnStatement

type ReturnStatement struct {
	BaseNode
	Argument Expression `json:"argument"`
}

ReturnStatement defines an Expression to return

func (*ReturnStatement) Copy

func (s *ReturnStatement) Copy() Node

func (*ReturnStatement) MarshalJSON

func (s *ReturnStatement) MarshalJSON() ([]byte, error)

func (*ReturnStatement) Type

func (*ReturnStatement) Type() string

Type is the abstract type

func (*ReturnStatement) UnmarshalJSON

func (s *ReturnStatement) UnmarshalJSON(data []byte) error

type SourceLocation

type SourceLocation struct {
	File   string   `json:"file,omitempty"`
	Start  Position `json:"start"`            // Start is the location in the source the node starts
	End    Position `json:"end"`              // End is the location in the source the node ends
	Source string   `json:"source,omitempty"` // Source is optional raw source
}

SourceLocation represents the location of a node in the AST

func (*SourceLocation) Copy added in v0.13.0

func (l *SourceLocation) Copy() *SourceLocation

func (SourceLocation) IsValid added in v0.13.0

func (l SourceLocation) IsValid() bool

func (SourceLocation) Less

func (SourceLocation) String

func (l SourceLocation) String() string

type Statement

type Statement interface {
	Node
	// contains filtered or unexported methods
}

Statement Perhaps we don't even want statements nor expression statements

type StreamType added in v0.156.0

type StreamType struct {
	BaseNode
	ElementType MonoType `json:"element"`
}

func (*StreamType) Copy added in v0.156.0

func (c *StreamType) Copy() Node

func (StreamType) MarshalJSON added in v0.156.0

func (arr StreamType) MarshalJSON() ([]byte, error)

func (StreamType) Type added in v0.156.0

func (StreamType) Type() string

func (*StreamType) UnmarshalJSON added in v0.156.0

func (nt *StreamType) UnmarshalJSON(data []byte) error

type StringExpression added in v0.40.0

type StringExpression struct {
	BaseNode

	Parts []StringExpressionPart `json:"parts"`
}

func (*StringExpression) Copy added in v0.40.0

func (e *StringExpression) Copy() Node

func (*StringExpression) MarshalJSON added in v0.40.0

func (e *StringExpression) MarshalJSON() ([]byte, error)

func (*StringExpression) Type added in v0.40.0

func (*StringExpression) Type() string

func (*StringExpression) UnmarshalJSON added in v0.40.0

func (e *StringExpression) UnmarshalJSON(data []byte) error

type StringExpressionPart added in v0.40.0

type StringExpressionPart interface {
	Node
	// contains filtered or unexported methods
}

type StringLiteral

type StringLiteral struct {
	BaseNode
	// Value is the unescaped value of the string literal
	Value string `json:"value"`
}

StringLiteral expressions begin and end with double quote marks.

func StringLiteralFromValue added in v0.75.0

func StringLiteralFromValue(v string) *StringLiteral

func (*StringLiteral) Copy

func (l *StringLiteral) Copy() Node

func (*StringLiteral) Key added in v0.12.0

func (l *StringLiteral) Key() string

StringLiterals are valid object keys

func (*StringLiteral) MarshalJSON

func (l *StringLiteral) MarshalJSON() ([]byte, error)

func (*StringLiteral) Type

func (*StringLiteral) Type() string

type TestCaseStatement added in v0.98.0

type TestCaseStatement struct {
	BaseNode
	ID      *Identifier    `json:"id"`
	Extends *StringLiteral `json:"extends,omitempty"`
	Block   *Block         `json:"block"`
}

TestCaseStatement declares a Flux test case

func (*TestCaseStatement) Copy added in v0.98.0

func (s *TestCaseStatement) Copy() Node

Copy returns a deep copy of a TestCaseStatement Node

func (*TestCaseStatement) MarshalJSON added in v0.98.0

func (s *TestCaseStatement) MarshalJSON() ([]byte, error)

func (*TestCaseStatement) Type added in v0.98.0

func (*TestCaseStatement) Type() string

Type is the abstract type

type TestStatement added in v0.19.0

type TestStatement struct {
	BaseNode
	Assignment *VariableAssignment `json:"assignment"`
}

TestStatement declares a Flux test case

func (*TestStatement) Copy added in v0.19.0

func (s *TestStatement) Copy() Node

Copy returns a deep copy of a TestStatement Node

func (*TestStatement) MarshalJSON added in v0.19.0

func (s *TestStatement) MarshalJSON() ([]byte, error)

func (*TestStatement) Type added in v0.19.0

func (*TestStatement) Type() string

Type is the abstract type

type TextPart added in v0.40.0

type TextPart struct {
	BaseNode
	Value string `json:"value"`
}

func (*TextPart) Copy added in v0.40.0

func (p *TextPart) Copy() Node

func (*TextPart) MarshalJSON added in v0.40.0

func (p *TextPart) MarshalJSON() ([]byte, error)

func (*TextPart) Type added in v0.40.0

func (*TextPart) Type() string

func (*TextPart) UnmarshalJSON added in v0.40.0

func (p *TextPart) UnmarshalJSON(data []byte) error

type TvarType added in v0.78.0

type TvarType struct {
	BaseNode
	ID *Identifier `json:"name"`
}

func (*TvarType) Copy added in v0.81.0

func (c *TvarType) Copy() Node

func (TvarType) MarshalJSON added in v0.81.0

func (tv TvarType) MarshalJSON() ([]byte, error)

func (TvarType) Type added in v0.78.0

func (TvarType) Type() string

type TypeConstraint added in v0.77.1

type TypeConstraint struct {
	BaseNode
	Tvar  *Identifier   `json:"tvar"`
	Kinds []*Identifier `json:"kinds"`
}

func (*TypeConstraint) Copy added in v0.81.0

func (c *TypeConstraint) Copy() Node

func (TypeConstraint) MarshalJSON added in v0.81.0

func (typ_con TypeConstraint) MarshalJSON() ([]byte, error)

func (TypeConstraint) Type added in v0.81.0

func (TypeConstraint) Type() string

func (*TypeConstraint) UnmarshalJSON added in v0.81.0

func (typ_expr *TypeConstraint) UnmarshalJSON(data []byte) error

type TypeExpression added in v0.77.1

type TypeExpression struct {
	BaseNode
	Ty          MonoType          `json:"monotype"`
	Constraints []*TypeConstraint `json:"constraints"`
}

func (*TypeExpression) Copy added in v0.81.0

func (c *TypeExpression) Copy() Node

func (TypeExpression) MarshalJSON added in v0.81.0

func (typ_expr TypeExpression) MarshalJSON() ([]byte, error)

func (TypeExpression) Type added in v0.77.1

func (TypeExpression) Type() string

func (*TypeExpression) UnmarshalJSON added in v0.81.0

func (typ_expr *TypeExpression) UnmarshalJSON(data []byte) error

type UnaryExpression

type UnaryExpression struct {
	BaseNode
	Operator OperatorKind `json:"operator"`
	Argument Expression   `json:"argument"`
}

UnaryExpression use operators act on a single operand in an expression.

func (*UnaryExpression) Copy

func (e *UnaryExpression) Copy() Node

func (*UnaryExpression) MarshalJSON

func (e *UnaryExpression) MarshalJSON() ([]byte, error)

func (*UnaryExpression) Type

func (*UnaryExpression) Type() string

Type is the abstract type

func (*UnaryExpression) UnmarshalJSON

func (e *UnaryExpression) UnmarshalJSON(data []byte) error

type UnsignedIntegerLiteral

type UnsignedIntegerLiteral struct {
	BaseNode
	Value uint64 `json:"value"`
}

UnsignedIntegerLiteral represent integer numbers.

func UnsignedIntegerLiteralFromValue added in v0.75.0

func UnsignedIntegerLiteralFromValue(v uint64) *UnsignedIntegerLiteral

func (*UnsignedIntegerLiteral) Copy

func (l *UnsignedIntegerLiteral) Copy() Node

func (*UnsignedIntegerLiteral) MarshalJSON

func (l *UnsignedIntegerLiteral) MarshalJSON() ([]byte, error)

func (*UnsignedIntegerLiteral) Type

Type is the abstract type

func (*UnsignedIntegerLiteral) UnmarshalJSON

func (l *UnsignedIntegerLiteral) UnmarshalJSON(data []byte) error

type VariableAssignment added in v0.8.0

type VariableAssignment struct {
	BaseNode
	ID   *Identifier `json:"id"`
	Init Expression  `json:"init"`
}

VariableAssignment represents the declaration of a variable

func (*VariableAssignment) Copy added in v0.8.0

func (d *VariableAssignment) Copy() Node

func (*VariableAssignment) MarshalJSON added in v0.8.0

func (d *VariableAssignment) MarshalJSON() ([]byte, error)

func (*VariableAssignment) Type added in v0.8.0

func (*VariableAssignment) Type() string

Type is the abstract type

func (*VariableAssignment) UnmarshalJSON added in v0.8.0

func (d *VariableAssignment) UnmarshalJSON(data []byte) error

type Visitor added in v0.8.0

type Visitor interface {
	Visit(node Node) Visitor
	Done(node Node)
}

Visitor implements the visitor pattern.

When used with the Walk function, Visit will be called for every node in depth-first order. After all children for a Node have been visted, Done is called on that Node to signal that we are done with that Node.

If Visit returns nil, Walk will not recurse on the children. Neither Visit nor Done will be invoked on nil nodes.

func CreateVisitor added in v0.8.0

func CreateVisitor(f func(Node)) Visitor

type WithSource added in v0.113.0

type WithSource struct {
	Source *Identifier `json:"source"`
	With   []Comment   `json:"with,omitempty"`
}

Directories

Path Synopsis
Package asttest implements utilities for testing the abstract syntax tree.
Package asttest implements utilities for testing the abstract syntax tree.

Jump to

Keyboard shortcuts

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