abacus

package
v1.4.2 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2022 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Green   = Color("\033[32m")
	Magenta = Color("\033[35m")
	Red     = Color("\033[91m")
	White   = Color("\033[37m")
	Reset   = Color("\033[0m")
)
View Source
var FunctionNames = map[FunctionName]struct{}{
	// contains filtered or unexported fields
}

Functions

This section is empty.

Types

type Assignment

type Assignment []Number

func (Assignment) Color

func (r Assignment) Color() string

func (Assignment) String

func (r Assignment) String() string

type Bool

type Bool bool

func (Bool) Color

func (r Bool) Color() string

func (Bool) String

func (r Bool) String() string

type CalledLambda

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

func (*CalledLambda) Signature

func (l *CalledLambda) Signature() string

type Color

type Color string

type Colorer

type Colorer interface {
	Color() string
}

type Constant

type Constant string
const (
	PI  Constant = "pi"
	PHI Constant = "phi"
	E   Constant = "e"
)

type ConstantsStore

type ConstantsStore struct {
	Constants map[Constant]Number
	LogCache  *lru.Cache[string, Number] // TODO: migrate back to hashicorp/golang-lru when it supports generics
}

func NewConstantsStore

func NewConstantsStore() (*ConstantsStore, error)

func (*ConstantsStore) Cache

func (cs *ConstantsStore) Cache(key string, value Number)

func (*ConstantsStore) Cached

func (cs *ConstantsStore) Cached(key string) (Number, bool)

func (*ConstantsStore) Constant

func (cs *ConstantsStore) Constant(constant Constant) (Number, bool)

func (*ConstantsStore) SetConstant

func (cs *ConstantsStore) SetConstant(constant Constant, value Number)

type Formatter

type Formatter interface {
	fmt.Stringer
	Colorer
}

type FunctionName

type FunctionName string

type LambdaArguments

type LambdaArguments []String

func (LambdaArguments) Color

func (r LambdaArguments) Color() string

Color variables and Lambdas differently

func (LambdaArguments) String

func (r LambdaArguments) String() string

type LambdaAssignment

type LambdaAssignment string

func (LambdaAssignment) Color

func (r LambdaAssignment) Color() string

func (LambdaAssignment) String

func (r LambdaAssignment) String() string

type LambdaCallStack

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

func (*LambdaCallStack) IsRecurring

func (s *LambdaCallStack) IsRecurring(lambdaName string) bool

func (*LambdaCallStack) Peek

func (s *LambdaCallStack) Peek() *CalledLambda

func (*LambdaCallStack) Pop

func (s *LambdaCallStack) Pop() *CalledLambda

func (*LambdaCallStack) Push

func (s *LambdaCallStack) Push(l *CalledLambda)

type LambdaDeclaration

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

type MixedTuple

type MixedTuple []interface{}

func (MixedTuple) Color

func (r MixedTuple) Color() string

func (MixedTuple) String

func (r MixedTuple) String() string

type Number

type Number struct {
	*apd.Decimal
}

func NewNumber

func NewNumber(f float64) Number

func (Number) Color

func (r Number) Color() string

func (Number) String

func (r Number) String() string

type Parameter

type Parameter struct {
	Name  string
	Value interface{}
}

type RecursionParameters

type RecursionParameters struct {
	MaxRecurrences uint
	LastValue      parser.IExpressionContext
	StopWhen       parser.IBoolExpressionContext
	Memoize        bool
}

func NewRecursionParameters

func NewRecursionParameters() *RecursionParameters

type Result

type Result struct {
	Value  Formatter
	Errors []error
}

Result is struct returned after evaluating each leaf in the parser tree. Errors are propagated up

func NewResult

func NewResult(value Formatter) *Result

func (*Result) Length

func (r *Result) Length() int

Length returns the length of the tuple value of result. If Value is not a tuple type 1 is returned

func (*Result) WithError

func (r *Result) WithError(ee ...string) *Result

func (*Result) WithErrors

func (r *Result) WithErrors(previous *Result, ee ...string) *Result

type String

type String string

func (String) Color

func (r String) Color() string

func (String) String

func (r String) String() string

type Tuple

type Tuple []Number

func (Tuple) Color

func (r Tuple) Color() string

func (Tuple) String

func (r Tuple) String() string

type VariablesTuple

type VariablesTuple []String

func (VariablesTuple) Color

func (r VariablesTuple) Color() string

func (VariablesTuple) String

func (r VariablesTuple) String() string

type Visitor

type Visitor struct {
	antlr.ParseTreeVisitor

	ConstantsStore *ConstantsStore
	// contains filtered or unexported fields
}

func NewAbacusVisitor

func NewAbacusVisitor(precision uint32, strict bool) (*Visitor, error)

func (*Visitor) HandleFunctionInvocation

func (v *Visitor) HandleFunctionInvocation(ctx *parser.FunctionInvocationContext) interface{}

func (*Visitor) LambdaNames

func (v *Visitor) LambdaNames() []string

func (*Visitor) SetVariable

func (v *Visitor) SetVariable(name string, value Number)

func (*Visitor) VariableNames

func (v *Visitor) VariableNames() []string

func (*Visitor) Visit

func (v *Visitor) Visit(tree antlr.ParseTree) interface{}

func (*Visitor) VisitAddSub

func (v *Visitor) VisitAddSub(c *parser.AddSubContext) interface{}

func (*Visitor) VisitAndOrXor

func (v *Visitor) VisitAndOrXor(c *parser.AndOrXorContext) interface{}

func (*Visitor) VisitAtomExpr

func (v *Visitor) VisitAtomExpr(c *parser.AtomExprContext) interface{}

func (*Visitor) VisitBoolAtom

func (v *Visitor) VisitBoolAtom(c *parser.BoolAtomContext) interface{}

func (*Visitor) VisitBooleanAtom

func (v *Visitor) VisitBooleanAtom(c *parser.BooleanAtomContext) interface{}

func (*Visitor) VisitConstant

func (v *Visitor) VisitConstant(c *parser.ConstantContext) interface{}

func (*Visitor) VisitEqualComparison

func (v *Visitor) VisitEqualComparison(c *parser.EqualComparisonContext) interface{}

func (*Visitor) VisitFuncExpr

func (v *Visitor) VisitFuncExpr(c *parser.FuncExprContext) interface{}

func (*Visitor) VisitFunctionInvocation

func (v *Visitor) VisitFunctionInvocation(c *parser.FunctionInvocationContext) interface{}

func (*Visitor) VisitGreaterComparison

func (v *Visitor) VisitGreaterComparison(c *parser.GreaterComparisonContext) interface{}

func (*Visitor) VisitGreaterOrEqualComparison

func (v *Visitor) VisitGreaterOrEqualComparison(c *parser.GreaterOrEqualComparisonContext) interface{}

func (*Visitor) VisitLambdaArguments

func (v *Visitor) VisitLambdaArguments(c *parser.LambdaArgumentsContext) interface{}

func (*Visitor) VisitLambdaDeclaration

func (v *Visitor) VisitLambdaDeclaration(c *parser.LambdaDeclarationContext) interface{}

func (*Visitor) VisitLambdaExpr

func (v *Visitor) VisitLambdaExpr(c *parser.LambdaExprContext) interface{}

func (*Visitor) VisitLessComparison

func (v *Visitor) VisitLessComparison(c *parser.LessComparisonContext) interface{}

func (*Visitor) VisitLessOrEqualComparison

func (v *Visitor) VisitLessOrEqualComparison(c *parser.LessOrEqualComparisonContext) interface{}

func (*Visitor) VisitMinusSign

func (v *Visitor) VisitMinusSign(c *parser.MinusSignContext) interface{}

func (*Visitor) VisitMixedTuple

func (v *Visitor) VisitMixedTuple(c *parser.MixedTupleContext) interface{}

func (*Visitor) VisitMod

func (v *Visitor) VisitMod(c *parser.ModContext) interface{}

func (*Visitor) VisitMulDiv

func (v *Visitor) VisitMulDiv(c *parser.MulDivContext) interface{}

func (*Visitor) VisitNot

func (v *Visitor) VisitNot(c *parser.NotContext) interface{}

func (*Visitor) VisitNullArityLambda

func (v *Visitor) VisitNullArityLambda(c *parser.NullArityLambdaContext) interface{}

func (*Visitor) VisitNumber

func (v *Visitor) VisitNumber(c *parser.NumberContext) interface{}

func (*Visitor) VisitParameter

func (v *Visitor) VisitParameter(c *parser.ParameterContext) interface{}

func (*Visitor) VisitParentheses

func (v *Visitor) VisitParentheses(c *parser.ParenthesesContext) interface{}

func (*Visitor) VisitParenthesesBoolean

func (v *Visitor) VisitParenthesesBoolean(c *parser.ParenthesesBooleanContext) interface{}

func (*Visitor) VisitPercent

func (v *Visitor) VisitPercent(c *parser.PercentContext) interface{}

func (*Visitor) VisitPlusSign

func (v *Visitor) VisitPlusSign(c *parser.PlusSignContext) interface{}

func (*Visitor) VisitPow

func (v *Visitor) VisitPow(c *parser.PowContext) interface{}

func (*Visitor) VisitRecursionParameters

func (v *Visitor) VisitRecursionParameters(c *parser.RecursionParametersContext) interface{}

TODO: Errors aren't handled

func (*Visitor) VisitRoot

func (v *Visitor) VisitRoot(c *parser.RootContext) interface{}

func (*Visitor) VisitSignedExpr

func (v *Visitor) VisitSignedExpr(c *parser.SignedExprContext) interface{}

func (*Visitor) VisitTuple

func (v *Visitor) VisitTuple(c *parser.TupleContext) interface{}

func (*Visitor) VisitVariable

func (v *Visitor) VisitVariable(c *parser.VariableContext) interface{}

func (*Visitor) VisitVariableDeclaration

func (v *Visitor) VisitVariableDeclaration(c *parser.VariableDeclarationContext) interface{}

func (*Visitor) VisitVariablesLambda

func (v *Visitor) VisitVariablesLambda(c *parser.VariablesLambdaContext) interface{}

func (*Visitor) VisitVariablesTuple

func (v *Visitor) VisitVariablesTuple(c *parser.VariablesTupleContext) interface{}

Jump to

Keyboard shortcuts

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