ast

package
v0.0.0-...-1dbd504 Latest Latest
Warning

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

Go to latest
Published: Oct 22, 2020 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// AddFloat64 is a primitive operator.
	AddFloat64 PrimitiveOperator = "+"
	// SubtractFloat64 is a primitive operator.
	SubtractFloat64 = "-"
	// MultiplyFloat64 is a primitive operator.
	MultiplyFloat64 = "*"
	// DivideFloat64 is a primitive operator.
	DivideFloat64 = "/"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AlgebraicAlternative

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

AlgebraicAlternative is an algebraic alternative.

func NewAlgebraicAlternative

func NewAlgebraicAlternative(c Constructor, es []string, e Expression) AlgebraicAlternative

NewAlgebraicAlternative creates an algebraic alternative.

func (AlgebraicAlternative) Constructor

func (a AlgebraicAlternative) Constructor() Constructor

Constructor returns a constructor.

func (AlgebraicAlternative) ConvertTypes

ConvertTypes converts types.

func (AlgebraicAlternative) ElementNames

func (a AlgebraicAlternative) ElementNames() []string

ElementNames returns element names.

func (AlgebraicAlternative) Expression

func (a AlgebraicAlternative) Expression() Expression

Expression is an expression.

func (AlgebraicAlternative) RenameVariables

func (a AlgebraicAlternative) RenameVariables(vs map[string]string) AlgebraicAlternative

RenameVariables renames variables.

func (AlgebraicAlternative) VisitExpressions

func (a AlgebraicAlternative) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type AlgebraicCase

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

AlgebraicCase is an algebraic case expression.

func NewAlgebraicCase

NewAlgebraicCase creates an algebraic case expression.

func NewAlgebraicCaseWithoutDefault

func NewAlgebraicCaseWithoutDefault(e Expression, as []AlgebraicAlternative) AlgebraicCase

NewAlgebraicCaseWithoutDefault creates an algebraic case expression.

func (AlgebraicCase) Alternatives

func (c AlgebraicCase) Alternatives() []AlgebraicAlternative

Alternatives returns alternatives.

func (AlgebraicCase) Argument

func (c AlgebraicCase) Argument() Expression

func (AlgebraicCase) ConvertTypes

func (c AlgebraicCase) ConvertTypes(f func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (AlgebraicCase) DefaultAlternative

func (c AlgebraicCase) DefaultAlternative() (DefaultAlternative, bool)

func (AlgebraicCase) RenameVariables

func (c AlgebraicCase) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (AlgebraicCase) VisitExpressions

func (c AlgebraicCase) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Argument

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

Argument is a argument.

func NewArgument

func NewArgument(n string, t types.Type) Argument

NewArgument creates an argument.

func (Argument) ConvertTypes

func (a Argument) ConvertTypes(f func(types.Type) types.Type) Argument

ConvertTypes converts types.

func (Argument) Name

func (a Argument) Name() string

Name returns a name.

func (Argument) RenameVariables

func (a Argument) RenameVariables(vs map[string]string) Argument

RenameVariables renames variables.

func (Argument) Type

func (a Argument) Type() types.Type

Type returns a type.

type Atom

type Atom interface {
	RenameVariablesInAtom(map[string]string) Atom
	// contains filtered or unexported methods
}

Atom is an atom.

type Bind

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

Bind is a bind statement.

func NewBind

func NewBind(n string, l Lambda) Bind

NewBind creates a bind statement.

func (Bind) ConvertTypes

func (b Bind) ConvertTypes(f func(types.Type) types.Type) Bind

ConvertTypes converts types.

func (Bind) Lambda

func (b Bind) Lambda() Lambda

Lambda returns a lambda form.

func (Bind) Name

func (b Bind) Name() string

Name returns a name.

func (Bind) RenameVariables

func (b Bind) RenameVariables(vs map[string]string) Bind

RenameVariables renames variables.

func (Bind) VisitExpressions

func (b Bind) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Case

type Case interface {
	Expression
	Argument() Expression
	DefaultAlternative() (DefaultAlternative, bool)
}

Case is a case expression.

type Constructor

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

Constructor is a constructor.

func NewConstructor

func NewConstructor(t types.Algebraic, i int) Constructor

NewConstructor creates a constructor.

func (Constructor) AlgebraicType

func (c Constructor) AlgebraicType() types.Algebraic

AlgebraicType returns an algebraic type.

func (Constructor) ConstructorType

func (c Constructor) ConstructorType() types.Constructor

ConstructorType returns a constructor type.

func (Constructor) ID

func (c Constructor) ID() string

ID returns an ID.

func (Constructor) Index

func (c Constructor) Index() int

Index returns a constructor index.

type ConstructorApplication

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

ConstructorApplication is a constructor application.

func NewConstructorApplication

func NewConstructorApplication(c Constructor, as []Atom) ConstructorApplication

NewConstructorApplication creates a constructor application.

func (ConstructorApplication) Arguments

func (a ConstructorApplication) Arguments() []Atom

Arguments returns arguments.

func (ConstructorApplication) Constructor

func (a ConstructorApplication) Constructor() Constructor

Constructor returns a constructor.

func (ConstructorApplication) ConvertTypes

func (a ConstructorApplication) ConvertTypes(func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (ConstructorApplication) RenameVariables

func (a ConstructorApplication) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (ConstructorApplication) VisitExpressions

func (a ConstructorApplication) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Declaration

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

Declaration is a declaration.

func NewDeclaration

func NewDeclaration(n string, l LambdaDeclaration) Declaration

NewDeclaration creates a declaration.

func (Declaration) ConvertTypes

func (d Declaration) ConvertTypes(f func(types.Type) types.Type) Declaration

ConvertTypes converts types.

func (Declaration) Lambda

func (d Declaration) Lambda() LambdaDeclaration

Lambda returns a lambda declaration.

func (Declaration) Name

func (d Declaration) Name() string

Name returns a name.

type DefaultAlternative

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

DefaultAlternative is a default alternative.

func NewDefaultAlternative

func NewDefaultAlternative(s string, e Expression) DefaultAlternative

NewDefaultAlternative creates a default alternative.

func (DefaultAlternative) ConvertTypes

func (a DefaultAlternative) ConvertTypes(f func(types.Type) types.Type) DefaultAlternative

ConvertTypes converts types.

func (DefaultAlternative) Expression

func (a DefaultAlternative) Expression() Expression

Expression is an expression.

func (DefaultAlternative) RenameVariables

func (a DefaultAlternative) RenameVariables(vs map[string]string) DefaultAlternative

RenameVariables renames variables.

func (DefaultAlternative) Variable

func (a DefaultAlternative) Variable() string

Variable returns a bound variable.

func (DefaultAlternative) VisitExpressions

func (a DefaultAlternative) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Expression

type Expression interface {
	VisitExpressions(func(Expression) error) error
	ConvertTypes(func(types.Type) types.Type) Expression
	RenameVariables(map[string]string) Expression
	// contains filtered or unexported methods
}

Expression is an expression.

type Float64

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

Float64 is a float64 literal.

func NewFloat64

func NewFloat64(f float64) Float64

NewFloat64 creates a float64 number.

func (Float64) ConvertTypes

func (f Float64) ConvertTypes(func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (Float64) RenameVariables

func (f Float64) RenameVariables(map[string]string) Expression

RenameVariables renames variables.

func (Float64) RenameVariablesInAtom

func (f Float64) RenameVariablesInAtom(map[string]string) Atom

RenameVariablesInAtom renames variables.

func (Float64) Value

func (f Float64) Value() float64

Value returns a value.

func (Float64) VisitExpressions

func (f Float64) VisitExpressions(ff func(Expression) error) error

VisitExpressions visits expressions.

type FunctionApplication

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

FunctionApplication is a function application.

func NewFunctionApplication

func NewFunctionApplication(v Variable, as []Atom) FunctionApplication

NewFunctionApplication creates an application.

func (FunctionApplication) Arguments

func (a FunctionApplication) Arguments() []Atom

Arguments returns arguments.

func (FunctionApplication) ConvertTypes

func (a FunctionApplication) ConvertTypes(func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (FunctionApplication) Function

func (a FunctionApplication) Function() Variable

Function returns a function.

func (FunctionApplication) RenameVariables

func (a FunctionApplication) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (FunctionApplication) VisitExpressions

func (a FunctionApplication) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Lambda

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

Lambda is a lambda form.

func NewFunctionLambda

func NewFunctionLambda(vs []Argument, as []Argument, e Expression, t types.Type) Lambda

NewFunctionLambda creates a lambda form.

func NewVariableLambda

func NewVariableLambda(vs []Argument, e Expression, t types.Bindable) Lambda

NewVariableLambda creates a lambda form.

func (Lambda) ArgumentNames

func (l Lambda) ArgumentNames() []string

ArgumentNames returns argument names.

func (Lambda) Body

func (l Lambda) Body() Expression

Body returns a body expression.

func (Lambda) ClearFreeVariables

func (l Lambda) ClearFreeVariables() Lambda

ClearFreeVariables clears free variables.

func (Lambda) ConvertTypes

func (l Lambda) ConvertTypes(f func(types.Type) types.Type) Lambda

ConvertTypes converts types.

func (Lambda) FreeVariableNames

func (l Lambda) FreeVariableNames() []string

FreeVariableNames returns free varriable names.

func (Lambda) RenameVariables

func (l Lambda) RenameVariables(vs map[string]string) Lambda

RenameVariables renames variables.

func (Lambda) ToDeclaration

func (l Lambda) ToDeclaration() LambdaDeclaration

ToDeclaration returns a lambda declaration.

func (Lambda) VisitExpressions

func (l Lambda) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type LambdaDeclaration

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

LambdaDeclaration is a declaration.

func NewLambdaDeclaration

func NewLambdaDeclaration(vs []types.Type, as []types.Type, r types.Type) LambdaDeclaration

NewLambdaDeclaration creates a declaration.

func (LambdaDeclaration) ArgumentTypes

func (l LambdaDeclaration) ArgumentTypes() []types.Type

ArgumentTypes returns argument types.

func (LambdaDeclaration) ConvertTypes

func (l LambdaDeclaration) ConvertTypes(f func(types.Type) types.Type) LambdaDeclaration

ConvertTypes converts types.

func (LambdaDeclaration) FreeVariableTypes

func (l LambdaDeclaration) FreeVariableTypes() []types.Type

FreeVariableTypes returns free variable types.

func (LambdaDeclaration) IsThunk

func (l LambdaDeclaration) IsThunk() bool

IsThunk returns true if the lambda form is a thunk, or false otherwise.

func (LambdaDeclaration) ResultType

func (l LambdaDeclaration) ResultType() types.Type

ResultType returns a result type.

func (LambdaDeclaration) Type

func (l LambdaDeclaration) Type() types.Type

Type returns a type.

type Let

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

Let is a let expression.

func NewLet

func NewLet(bs []Bind, e Expression) Let

NewLet creates a let expression.

func (Let) Binds

func (l Let) Binds() []Bind

Binds returns binds.

func (Let) ConvertTypes

func (l Let) ConvertTypes(f func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (Let) Expression

func (l Let) Expression() Expression

Expression returns an expression.

func (Let) RenameVariables

func (l Let) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (Let) VisitExpressions

func (l Let) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type Literal

type Literal interface {
	Atom
	Expression
}

Literal is a literal.

type Module

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

Module is a module.

func NewModule

func NewModule(ds []Declaration, bs []Bind) Module

NewModule creates a module.

func (Module) Binds

func (m Module) Binds() []Bind

Binds returns binds.

func (Module) ConvertTypes

func (m Module) ConvertTypes(f func(types.Type) types.Type) Module

ConvertTypes converts types.

func (Module) Declarations

func (m Module) Declarations() []Declaration

Declarations returns declarations.

func (Module) RenameVariables

func (m Module) RenameVariables(vs map[string]string) Module

RenameVariables renames variables.

func (Module) Types

func (m Module) Types() []types.Type

Types returns types.

func (Module) VisitExpressions

func (m Module) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type PrimitiveAlternative

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

PrimitiveAlternative is a primitive alternative.

func NewPrimitiveAlternative

func NewPrimitiveAlternative(l Literal, e Expression) PrimitiveAlternative

NewPrimitiveAlternative creates a primitive alternative.

func (PrimitiveAlternative) ConvertTypes

ConvertTypes converts types.

func (PrimitiveAlternative) Expression

func (a PrimitiveAlternative) Expression() Expression

Expression is an expression.

func (PrimitiveAlternative) Literal

func (a PrimitiveAlternative) Literal() Literal

Literal returns a literal pattern.

func (PrimitiveAlternative) RenameVariables

func (a PrimitiveAlternative) RenameVariables(vs map[string]string) PrimitiveAlternative

RenameVariables renames variables.

func (PrimitiveAlternative) VisitExpressions

func (a PrimitiveAlternative) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type PrimitiveCase

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

PrimitiveCase is a primitive case expression.

func NewPrimitiveCase

NewPrimitiveCase creates a primitive case expression.

func NewPrimitiveCaseWithoutDefault

func NewPrimitiveCaseWithoutDefault(e Expression, t types.Primitive, as []PrimitiveAlternative) PrimitiveCase

NewPrimitiveCaseWithoutDefault creates a primitive case expression.

func (PrimitiveCase) Alternatives

func (c PrimitiveCase) Alternatives() []PrimitiveAlternative

Alternatives returns alternatives.

func (PrimitiveCase) Argument

func (c PrimitiveCase) Argument() Expression

func (PrimitiveCase) ConvertTypes

func (c PrimitiveCase) ConvertTypes(f func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (PrimitiveCase) DefaultAlternative

func (c PrimitiveCase) DefaultAlternative() (DefaultAlternative, bool)

func (PrimitiveCase) RenameVariables

func (c PrimitiveCase) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (PrimitiveCase) Type

func (c PrimitiveCase) Type() types.Primitive

Type is a type.

func (PrimitiveCase) VisitExpressions

func (c PrimitiveCase) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type PrimitiveOperation

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

PrimitiveOperation is a saturated primitive operation.

func NewPrimitiveOperation

func NewPrimitiveOperation(p PrimitiveOperator, as []Atom) PrimitiveOperation

NewPrimitiveOperation creates a primitive operation.

func (PrimitiveOperation) Arguments

func (o PrimitiveOperation) Arguments() []Atom

Arguments returns arguments.

func (PrimitiveOperation) ConvertTypes

func (o PrimitiveOperation) ConvertTypes(func(types.Type) types.Type) Expression

ConvertTypes converts types.

func (PrimitiveOperation) PrimitiveOperator

func (o PrimitiveOperation) PrimitiveOperator() PrimitiveOperator

PrimitiveOperator returns a primitive operator.

func (PrimitiveOperation) RenameVariables

func (o PrimitiveOperation) RenameVariables(vs map[string]string) Expression

RenameVariables renames variables.

func (PrimitiveOperation) VisitExpressions

func (o PrimitiveOperation) VisitExpressions(f func(Expression) error) error

VisitExpressions visits expressions.

type PrimitiveOperator

type PrimitiveOperator string

PrimitiveOperator is a primitive operator.

type Variable

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

Variable is a variable.

func NewVariable

func NewVariable(s string) Variable

NewVariable creates a variable.

func (Variable) Name

func (v Variable) Name() string

Name returns a name.

func (Variable) RenameVariablesInAtom

func (v Variable) RenameVariablesInAtom(vs map[string]string) Atom

RenameVariablesInAtom renames variables.

Jump to

Keyboard shortcuts

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