expr

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Jul 11, 2021 License: MIT Imports: 11 Imported by: 10

README

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFailedToParseInteger  = errors.New("failed to parse integer")
	ErrFailedToParseFloat    = errors.New("failed to parse float")
	ErrNotAnInteger          = errors.New("not an integer")
	ErrNotAFloat             = errors.New("not a float")
	ErrUnsupportedType       = errors.New("unsupported type")
	ErrTypeMismatchForOp     = errors.New("type mismatch for operater")
	ErrDivideZero            = errors.New("divide zero")
	ErrPowOfZero             = errors.New("power of zero")
	ErrComparedTypesMismatch = errors.New("compared types mismatch")
	ErrBadArgumentsSize      = errors.New("bad arguments size")
)

Functions

func Equal

func Equal(v1, v2 Value) bool

func ExpectNArg

func ExpectNArg(got, want int) error

Types

type Expr

type Expr struct {
	// contains filtered or unexported fields
}

Expr is top-level object of expr package

func New

func New(s string, pool *Pool) (*Expr, error)

New creates an Expr and parses string s, pool can be nil

func (*Expr) Eval

func (e *Expr) Eval(getter VarGetter) (Value, error)

Eval calculate the expression getter maybe nil

type Func

type Func func(...Value) (Value, error)

type Getter

type Getter map[string]Value

default VarGetter implementation

func (Getter) GetVar

func (getter Getter) GetVar(name string) (Value, bool)

GetVar gets the value of variable

type Kind

type Kind int
const (
	KindInvalid Kind = iota
	KindInt
	KindFloat
	KindString
)

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func MustNewPool

func MustNewPool(factories ...map[string]Func) *Pool

func NewPool

func NewPool(factories ...map[string]Func) (*Pool, error)

func (*Pool) SetOnVarMissing

func (p *Pool) SetOnVarMissing(fn VarMissingFunc)

type Value

type Value struct {
	// contains filtered or unexported fields
}

func Bool

func Bool(ok bool) Value

func DefaultOnVarMissing

func DefaultOnVarMissing(varName string) (Value, error)

func Eval

func Eval(s string, getter map[string]Value, pool *Pool) (Value, error)

Eval calculate expression with pool(maybe nil)

func False

func False() Value

func Float

func Float(f float64) Value

func Int

func Int(i int64) Value

func NewValue

func NewValue(kind Kind) Value

func Nil

func Nil() Value

func String

func String(s string) Value

func True

func True() Value

func Zero

func Zero() Value

func (Value) Add

func (v Value) Add(v2 Value) (Value, error)

func (Value) And

func (v Value) And(v2 Value) Value

func (Value) Bool

func (v Value) Bool() bool

func (Value) Contains

func (v Value) Contains(v2 Value) Value

func (Value) Eq

func (v Value) Eq(v2 Value) (Value, error)

func (Value) Float

func (v Value) Float() float64

func (Value) Ge

func (v Value) Ge(v2 Value) (Value, error)

func (Value) Gt

func (v Value) Gt(v2 Value) (Value, error)

func (Value) Int

func (v Value) Int() int64

func (Value) Kind

func (v Value) Kind() Kind

func (Value) Le

func (v Value) Le(v2 Value) (Value, error)

func (Value) Lt

func (v Value) Lt(v2 Value) (Value, error)

func (Value) Mul

func (v Value) Mul(v2 Value) (Value, error)

func (Value) Ne

func (v Value) Ne(v2 Value) (Value, error)

func (Value) Not

func (v Value) Not() Value

func (Value) Or

func (v Value) Or(v2 Value) Value

func (Value) Pow

func (v Value) Pow(v2 Value) (Value, error)

func (Value) Quo

func (v Value) Quo(v2 Value) (Value, error)

func (Value) Rem

func (v Value) Rem(v2 Value) (Value, error)

func (*Value) Set

func (v *Value) Set(s string) error

func (Value) String

func (v Value) String() string

func (Value) Sub

func (v Value) Sub(v2 Value) (Value, error)

type VarGetter

type VarGetter interface {
	GetVar(string) (Value, bool)
}

VarGetter defines interface for getting value of variable

type VarMissingFunc

type VarMissingFunc func(string) (Value, error)

Jump to

Keyboard shortcuts

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