ast

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2020 License: MIT Imports: 3 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FuncParamsPrepend added in v0.2.0

func FuncParamsPrepend(p, ps Attrib) ([]string, error)

Types

type And

type And struct {
	A Expr
	B Expr
}

func (And) Eval

func (a And) Eval(c Context) Val

func (And) String

func (a And) String() string

type Arg

type Arg int

func (Arg) Eval

func (a Arg) Eval(c Context) Val

func (Arg) String

func (a Arg) String() string

type Assn

type Assn struct {
	V Var
	E Expr
}

func (Assn) Eval

func (a Assn) Eval(c Context) Val

func (Assn) String

func (a Assn) String() string

type Attrib

type Attrib interface{}

type Block added in v0.2.0

type Block []Expr

func (Block) Eval added in v0.2.0

func (b Block) Eval(c Context) Val

func (Block) String added in v0.2.0

func (b Block) String() string

type Call

type Call struct {
	Fn   Var
	Args CallArgs
}

func (Call) Eval

func (ca Call) Eval(c Context) Val

func (Call) String

func (ca Call) String() string

type CallArgs added in v0.2.0

type CallArgs []Expr

CallArgs is not an Expr, since it can never appear on its own

func CallArgsPrepend added in v0.2.0

func CallArgsPrepend(e, a Attrib) (CallArgs, error)

func NewCallArgs added in v0.2.0

func NewCallArgs() (CallArgs, error)

type Concat

type Concat struct {
	A Expr
	B Expr
}

func (Concat) Eval

func (cc Concat) Eval(c Context) Val

func (Concat) String

func (cc Concat) String() string

type Context

type Context struct {
	Args            []string
	VariableMap     map[Var]Val
	FunctionMap     map[string]func([]string) string
	UserFunctionMap map[string]FuncDecl
	MaxStackSize    int64
	MaxWhileIter    int
}

func NewContext

func NewContext(args []string, funcs map[string]func([]string) string) Context

type Equals

type Equals struct {
	A Expr
	B Expr
}

func (Equals) Eval

func (e Equals) Eval(c Context) Val

func (Equals) String

func (e Equals) String() string

type Expr

type Expr interface {
	Eval(Context) Val
	String() string
}

func BlockPrepend added in v0.2.0

func BlockPrepend(e, b Attrib) (Expr, error)

func NewAnd

func NewAnd(a, b Attrib) (Expr, error)

func NewArg

func NewArg(i Attrib) (Expr, error)

func NewAssn

func NewAssn(v, e Attrib) (Expr, error)

func NewBlock added in v0.2.0

func NewBlock() (Expr, error)

func NewCall

func NewCall(f, as Attrib) (Expr, error)

func NewConcat

func NewConcat(a, b Attrib) (Expr, error)

func NewEquals

func NewEquals(a, b Attrib) (Expr, error)

func NewIfElse

func NewIfElse(c, t, e Attrib) (Expr, error)

func NewIndex

func NewIndex(s, i Attrib) (Expr, error)

func NewIndexInt

func NewIndexInt(s, i Attrib) (Expr, error)

func NewNotEquals

func NewNotEquals(a, b Attrib) (Expr, error)

func NewOr

func NewOr(a, b Attrib) (Expr, error)

func NewProgram added in v0.2.0

func NewProgram(f, b Attrib) (Expr, error)

func NewVal

func NewVal(a Attrib) (Expr, error)

func NewVar

func NewVar(a Attrib) (Expr, error)

func NewWhile

func NewWhile(c, b Attrib) (Expr, error)

type FuncDecl added in v0.2.0

type FuncDecl struct {
	Params     []string
	Code       Block
	Identifier string
}

FuncDecl is not an Expr, since it can never appear on its own

func FuncDeclsAppend added in v0.2.0

func FuncDeclsAppend(f, fs Attrib) ([]FuncDecl, error)

func NewFuncDecl added in v0.2.0

func NewFuncDecl(i, p, b Attrib) (FuncDecl, error)

func (FuncDecl) Call added in v0.2.0

func (f FuncDecl) Call(c Context, args []Val) Val

func (FuncDecl) String added in v0.2.0

func (f FuncDecl) String() string

type IfElse

type IfElse struct {
	Cond Expr
	Then Expr
	Else Expr
}

func (IfElse) Eval

func (e IfElse) Eval(c Context) Val

func (IfElse) String

func (e IfElse) String() string

type Index

type Index struct {
	Source Expr
	I      Expr
}

func (Index) Eval

func (i Index) Eval(c Context) Val

func (Index) String

func (i Index) String() string

type NotEquals

type NotEquals struct {
	A Expr
	B Expr
}

func (NotEquals) Eval

func (e NotEquals) Eval(c Context) Val

func (NotEquals) String

func (e NotEquals) String() string

type Or

type Or struct {
	A Expr
	B Expr
}

func (Or) Eval

func (o Or) Eval(c Context) Val

func (Or) String

func (o Or) String() string

type Program added in v0.2.0

type Program struct {
	Funcs []FuncDecl
	Code  Block
}

func (Program) Eval added in v0.2.0

func (p Program) Eval(c Context) Val

func (Program) String added in v0.2.0

func (p Program) String() string

type Val

type Val string

func (Val) Eval

func (v Val) Eval(c Context) Val

func (Val) String

func (v Val) String() string

type Var

type Var string

func (Var) Eval

func (v Var) Eval(c Context) Val

func (Var) String

func (v Var) String() string

type While

type While struct {
	Cond Expr
	Body Expr
}

func (While) Eval

func (e While) Eval(c Context) Val

func (While) String

func (e While) String() string

Jump to

Keyboard shortcuts

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