optimizers

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2021 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CommentOptimizer added in v0.0.7

type CommentOptimizer struct {
}

CommentOptimizer removes all comments from the code

func (*CommentOptimizer) Optimize added in v0.0.7

func (o *CommentOptimizer) Optimize(prog ast.Node) error

Optimize is needed to implement Optimizer

func (*CommentOptimizer) Visit added in v0.0.7

func (o *CommentOptimizer) Visit(node ast.Node, visitType int) error

Visit is needed to implement Visitor

type CompoundOptimizer

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

CompoundOptimizer wraps all other optimizers and executes them

func NewCompoundOptimizer

func NewCompoundOptimizer() *CompoundOptimizer

NewCompoundOptimizer creates a new compound optimizer

func (*CompoundOptimizer) Optimize

func (co *CompoundOptimizer) Optimize(prog *ast.Program) error

Optimize is required to implement Optimizer

type ExpressionInversionOptimizer added in v0.0.9

type ExpressionInversionOptimizer struct {
}

ExpressionInversionOptimizer inverts negated expressions to shorten them

func (ExpressionInversionOptimizer) Optimize added in v0.0.9

func (o ExpressionInversionOptimizer) Optimize(prog ast.Node) error

Optimize is needed to implement Optimizer

func (ExpressionInversionOptimizer) OptimizeExpression added in v0.0.9

func (o ExpressionInversionOptimizer) OptimizeExpression(e ast.Expression) ast.Expression

OptimizeExpression optimizes a single expression Optimize() in contrast can only optimize whole programms

func (ExpressionInversionOptimizer) Visit added in v0.0.9

func (o ExpressionInversionOptimizer) Visit(node ast.Node, visitType int) error

Visit is needed to implement Visitor

type ExpressionOptimizer added in v0.0.10

type ExpressionOptimizer interface {
	// OptimizeExpression optimizes the given expression. The expression is mutated
	OptimizeExpression(prog ast.Expression) ast.Expression
}

ExpressionOptimizer is an additional optimizer interface, for optimizing single expressions

type Optimizer

type Optimizer interface {
	// Optimize optimizes the given ast. The ast is mutated (obviously)
	Optimize(prog ast.Node) error
}

Optimizer is the common interface for all optimizers

type StaticExpressionOptimizer

type StaticExpressionOptimizer struct {
}

StaticExpressionOptimizer evaluates static expressions at compile-time

func NewStaticExpressionOptimizer

func NewStaticExpressionOptimizer() *StaticExpressionOptimizer

NewStaticExpressionOptimizer returns a new StaticExpressionOptimizer

func (*StaticExpressionOptimizer) Optimize

func (o *StaticExpressionOptimizer) Optimize(prog ast.Node) error

Optimize is required to implement Optimizer

func (*StaticExpressionOptimizer) OptimizeExpression added in v0.0.10

func (o *StaticExpressionOptimizer) OptimizeExpression(e ast.Expression) ast.Expression

OptimizeExpression optimizes a single expression recursively

func (*StaticExpressionOptimizer) OptimizeExpressionNonRecursive added in v0.0.10

func (o *StaticExpressionOptimizer) OptimizeExpressionNonRecursive(exp ast.Expression) ast.Expression

OptimizeExpressionNonRecursive optimizes a single expression if no optimization is possible, nil is returned

func (*StaticExpressionOptimizer) Visit

func (o *StaticExpressionOptimizer) Visit(node ast.Node, visitType int) error

Visit is needed to implement the Visitor interface

type VariableNameOptimizer

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

VariableNameOptimizer replaces variable names with sorter names Names of external variables will be left unchanged Replacements are case-insensitive. "var" and "VaR" will be replaced with the same replacement

func NewVariableNameOptimizer

func NewVariableNameOptimizer() *VariableNameOptimizer

NewVariableNameOptimizer returns a new VariableNameOptimizer

func (*VariableNameOptimizer) GetReversalTable added in v0.0.13

func (o *VariableNameOptimizer) GetReversalTable() map[string]string

GetReversalTable returns a map that can be used to translated the shortened names back to the original names

func (*VariableNameOptimizer) Optimize

func (o *VariableNameOptimizer) Optimize(prog ast.Node) error

Optimize is needed to implement Optimizer

func (*VariableNameOptimizer) OptimizeVarName added in v0.0.10

func (o *VariableNameOptimizer) OptimizeVarName(in string) string

OptimizeVarName replaces a variable name with a new one (if it does not reference an external variable) the same input name will always result in the same output name

func (*VariableNameOptimizer) Visit

func (o *VariableNameOptimizer) Visit(node ast.Node, visitType int) error

Visit is needed to implement Visitor

Jump to

Keyboard shortcuts

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