ast

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2023 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Assign added in v0.18.0

type Assign struct {
	StatementNode
	Token token.Token
	Name  AssignmentNode
	Value ExpressionNode
}

type AssignmentNode added in v0.18.0

type AssignmentNode interface {
	Node
}

type Block added in v0.18.0

type Block struct {
	StatementNode
	Token      token.Token
	Statements []StatementNode
}

type Boolean

type Boolean struct {
	ExpressionNode
	Token token.Token
	Value bool
}

type Break added in v0.18.0

type Break struct {
	ExpressionNode
	Token token.Token
}

type Call added in v0.18.0

type Call struct {
	ExpressionNode
	Token     token.Token
	Callee    ExpressionNode
	Arguments []ExpressionNode
}

type Case added in v0.18.0

type Case struct {
	ExpressionNode
	Token   token.Token      // The "case" token
	Default bool             // Is this the default branch?
	Value   []ExpressionNode // The value of the case we'll be matching against
	Body    *Block           // The block that will be evaluated if matched
}

type Class added in v0.18.0

type Class struct {
	ExpressionNode
	Token token.Token
	Name  *Identifier
	Super *Identifier
	Body  *Block
}

type Compound added in v0.18.0

type Compound struct {
	ExpressionNode
	Token    token.Token
	Left     ExpressionNode
	Operator string
	Right    ExpressionNode
}

type Continue added in v0.18.0

type Continue struct {
	ExpressionNode
	Token token.Token
}

type Expression

type Expression struct {
	StatementNode
	Expression ExpressionNode
}

type ExpressionNode added in v0.18.0

type ExpressionNode interface {
	Node
}

type For added in v0.18.0

type For struct {
	ExpressionNode
	Token       token.Token
	Identifier  *Identifier
	Initializer StatementNode
	Condition   ExpressionNode
	Increment   StatementNode
	Block       *Block
}

type ForIn added in v0.18.0

type ForIn struct {
	ExpressionNode
	Token    token.Token    // for
	Key      *Identifier    // key
	Value    *Identifier    // value
	Iterable ExpressionNode // list, map
	Block    *Block         // { ... }
}

type Function added in v0.18.0

type Function struct {
	ExpressionNode
	Token      token.Token
	Name       *Identifier
	Parameters []*Identifier
	Defaults   map[string]ExpressionNode
	Body       *Block
}

type Identifier

type Identifier struct {
	ExpressionNode
	AssignmentNode
	Token token.Token
	Value string
}

type If added in v0.18.0

type If struct {
	ExpressionNode
	Token       token.Token
	Condition   ExpressionNode
	Consequence *Block
	Alternative *Block
}

type Import added in v0.18.0

type Import struct {
	ExpressionNode
	Token token.Token
	Path  *String
}

type ImportFrom added in v0.18.0

type ImportFrom struct {
	ExpressionNode
	Token       token.Token
	Path        *String
	Identifiers map[string]*Identifier
	Everything  bool
}

type Index added in v0.18.0

type Index struct {
	ExpressionNode
	AssignmentNode
	Token token.Token
	Left  ExpressionNode
	Index ExpressionNode
}

type Infix added in v0.18.0

type Infix struct {
	ExpressionNode
	Token    token.Token
	Left     ExpressionNode
	Operator string
	Right    ExpressionNode
}

type List added in v0.18.0

type List struct {
	ExpressionNode
	Token    token.Token
	Elements []ExpressionNode
}

type Map added in v0.18.0

type Map struct {
	ExpressionNode
	Token token.Token
	Pairs map[ExpressionNode]ExpressionNode
}

type Method added in v0.18.0

type Method struct {
	ExpressionNode
	Token     token.Token
	Left      ExpressionNode
	Method    ExpressionNode
	Arguments []ExpressionNode
}

type Node

type Node interface{}

type Null added in v0.18.0

type Null struct {
	ExpressionNode
	Token token.Token
}

type Number added in v0.18.0

type Number struct {
	ExpressionNode
	Token token.Token
	Value decimal.Decimal
}

type Postfix added in v0.26.0

type Postfix struct {
	ExpressionNode
	Token    token.Token
	Operator string
}

type Prefix added in v0.18.0

type Prefix struct {
	ExpressionNode
	Token    token.Token
	Operator string
	Right    ExpressionNode
}

type Program

type Program struct {
	Statements []StatementNode
}

type Property added in v0.18.0

type Property struct {
	ExpressionNode
	AssignmentNode
	Token    token.Token
	Left     ExpressionNode
	Property ExpressionNode
}

type Return added in v0.18.0

type Return struct {
	StatementNode
	Token token.Token
	Value ExpressionNode
}

type StatementNode added in v0.18.0

type StatementNode interface {
	Node
}

type String added in v0.18.0

type String struct {
	ExpressionNode
	Token token.Token
	Value string
}

type Switch added in v0.18.0

type Switch struct {
	ExpressionNode
	Token token.Token    // The "switch" token
	Value ExpressionNode // The value that will be used to determine the case
	Cases []*Case        // The cases this switch statement will handle
}

type Ternary added in v0.18.0

type Ternary struct {
	ExpressionNode
	Token     token.Token
	Condition ExpressionNode
	IfTrue    ExpressionNode
	IfFalse   ExpressionNode
}

type This added in v0.18.0

type This struct {
	ExpressionNode
	Token token.Token
}

type Trait added in v0.28.0

type Trait struct {
	ExpressionNode
	Token token.Token
	Name  *Identifier
	Body  *Block
}

type Use added in v0.28.0

type Use struct {
	ExpressionNode
	Token  token.Token
	Traits []*Identifier
}

type While added in v0.18.0

type While struct {
	ExpressionNode
	Token       token.Token
	Condition   ExpressionNode
	Consequence *Block
}

Jump to

Keyboard shortcuts

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