example

package
v1.12.0 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2023 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Code generated by mkunion. DO NOT EDIT.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalcSchemaDef added in v1.9.0

func CalcSchemaDef() *schema.UnionVariants[Calc]

func MatchCalc added in v1.10.0

func MatchCalc[TOut any](
	x Calc,
	f1 func(x *Lit) TOut,
	f2 func(x *Sum) TOut,
	f3 func(x *Mul) TOut,
	df func(x Calc) TOut,
) TOut

func MatchCalcR2 added in v1.10.0

func MatchCalcR2[TOut1, TOut2 any](
	x Calc,
	f1 func(x *Lit) (TOut1, TOut2),
	f2 func(x *Sum) (TOut1, TOut2),
	f3 func(x *Mul) (TOut1, TOut2),
	df func(x Calc) (TOut1, TOut2),
) (TOut1, TOut2)

func MatchTree added in v1.10.0

func MatchTree[TOut any](
	x Tree,
	f1 func(x *Branch) TOut,
	f2 func(x *Leaf) TOut,
	df func(x Tree) TOut,
) TOut

func MatchTreeR2 added in v1.10.0

func MatchTreeR2[TOut1, TOut2 any](
	x Tree,
	f1 func(x *Branch) (TOut1, TOut2),
	f2 func(x *Leaf) (TOut1, TOut2),
	df func(x Tree) (TOut1, TOut2),
) (TOut1, TOut2)

func MatchVehicle added in v1.10.0

func MatchVehicle[TOut any](
	x Vehicle,
	f1 func(x *Car) TOut,
	f2 func(x *Plane) TOut,
	f3 func(x *Boat) TOut,
	df func(x Vehicle) TOut,
) TOut

func MatchVehicleR2 added in v1.10.0

func MatchVehicleR2[TOut1, TOut2 any](
	x Vehicle,
	f1 func(x *Car) (TOut1, TOut2),
	f2 func(x *Plane) (TOut1, TOut2),
	f3 func(x *Boat) (TOut1, TOut2),
	df func(x Vehicle) (TOut1, TOut2),
) (TOut1, TOut2)

func MatchWherePredicate added in v1.10.0

func MatchWherePredicate[TOut any](
	x WherePredicate,
	f1 func(x *Eq) TOut,
	f2 func(x *And) TOut,
	f3 func(x *Or) TOut,
	f4 func(x *Path) TOut,
	df func(x WherePredicate) TOut,
) TOut

func MatchWherePredicateR2 added in v1.10.0

func MatchWherePredicateR2[TOut1, TOut2 any](
	x WherePredicate,
	f1 func(x *Eq) (TOut1, TOut2),
	f2 func(x *And) (TOut1, TOut2),
	f3 func(x *Or) (TOut1, TOut2),
	f4 func(x *Path) (TOut1, TOut2),
	df func(x WherePredicate) (TOut1, TOut2),
) (TOut1, TOut2)

func MustMatchCalc added in v1.4.0

func MustMatchCalc[TOut any](
	x Calc,
	f1 func(x *Lit) TOut,
	f2 func(x *Sum) TOut,
	f3 func(x *Mul) TOut,
) TOut

func MustMatchCalcR2 added in v1.7.1

func MustMatchCalcR2[TOut1, TOut2 any](
	x Calc,
	f1 func(x *Lit) (TOut1, TOut2),
	f2 func(x *Sum) (TOut1, TOut2),
	f3 func(x *Mul) (TOut1, TOut2),
) (TOut1, TOut2)

func MustMatchTree added in v1.4.0

func MustMatchTree[TOut any](
	x Tree,
	f1 func(x *Branch) TOut,
	f2 func(x *Leaf) TOut,
) TOut

func MustMatchTreeR2 added in v1.7.1

func MustMatchTreeR2[TOut1, TOut2 any](
	x Tree,
	f1 func(x *Branch) (TOut1, TOut2),
	f2 func(x *Leaf) (TOut1, TOut2),
) (TOut1, TOut2)

func MustMatchVehicle added in v1.4.0

func MustMatchVehicle[TOut any](
	x Vehicle,
	f1 func(x *Car) TOut,
	f2 func(x *Plane) TOut,
	f3 func(x *Boat) TOut,
) TOut

func MustMatchVehicleR2 added in v1.7.1

func MustMatchVehicleR2[TOut1, TOut2 any](
	x Vehicle,
	f1 func(x *Car) (TOut1, TOut2),
	f2 func(x *Plane) (TOut1, TOut2),
	f3 func(x *Boat) (TOut1, TOut2),
) (TOut1, TOut2)

func MustMatchWherePredicate added in v1.4.0

func MustMatchWherePredicate[TOut any](
	x WherePredicate,
	f1 func(x *Eq) TOut,
	f2 func(x *And) TOut,
	f3 func(x *Or) TOut,
	f4 func(x *Path) TOut,
) TOut

func MustMatchWherePredicateR2 added in v1.7.1

func MustMatchWherePredicateR2[TOut1, TOut2 any](
	x WherePredicate,
	f1 func(x *Eq) (TOut1, TOut2),
	f2 func(x *And) (TOut1, TOut2),
	f3 func(x *Or) (TOut1, TOut2),
	f4 func(x *Path) (TOut1, TOut2),
) (TOut1, TOut2)

func ReduceCalcBreadthFirst added in v1.2.0

func ReduceCalcBreadthFirst[A any](r CalcReducer[A], v Calc, init A) A

func ReduceCalcDepthFirst added in v1.2.0

func ReduceCalcDepthFirst[A any](r CalcReducer[A], v Calc, init A) A

func ReduceTreeBreadthFirst added in v1.2.0

func ReduceTreeBreadthFirst[A any](r TreeReducer[A], v Tree, init A) A

func ReduceTreeDepthFirst added in v1.2.0

func ReduceTreeDepthFirst[A any](r TreeReducer[A], v Tree, init A) A

func ReduceVehicleBreadthFirst added in v1.2.0

func ReduceVehicleBreadthFirst[A any](r VehicleReducer[A], v Vehicle, init A) A

func ReduceVehicleDepthFirst added in v1.2.0

func ReduceVehicleDepthFirst[A any](r VehicleReducer[A], v Vehicle, init A) A

func ReduceWherePredicateBreadthFirst added in v1.2.0

func ReduceWherePredicateBreadthFirst[A any](r WherePredicateReducer[A], v WherePredicate, init A) A

func ReduceWherePredicateDepthFirst added in v1.2.0

func ReduceWherePredicateDepthFirst[A any](r WherePredicateReducer[A], v WherePredicate, init A) A

func TreeSchemaDef added in v1.9.0

func TreeSchemaDef() *schema.UnionVariants[Tree]

func VehicleSchemaDef added in v1.9.0

func VehicleSchemaDef() *schema.UnionVariants[Vehicle]

Types

type And

type And []WherePredicate

func (*And) Accept

func (r *And) Accept(v WherePredicateVisitor) any

type Boat

type Boat struct{}

func (*Boat) Accept

func (r *Boat) Accept(v VehicleVisitor) any

type Branch

type Branch struct{ L, R Tree }

func (*Branch) Accept

func (r *Branch) Accept(v TreeVisitor) any

type Calc added in v1.1.0

type Calc interface {
	Accept(g CalcVisitor) any
}

type CalcBreadthFirstVisitor added in v1.2.0

type CalcBreadthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*CalcBreadthFirstVisitor[A]) VisitLit added in v1.2.0

func (d *CalcBreadthFirstVisitor[A]) VisitLit(v *Lit) any

func (*CalcBreadthFirstVisitor[A]) VisitMul added in v1.2.0

func (d *CalcBreadthFirstVisitor[A]) VisitMul(v *Mul) any

func (*CalcBreadthFirstVisitor[A]) VisitSum added in v1.2.0

func (d *CalcBreadthFirstVisitor[A]) VisitSum(v *Sum) any

type CalcDefaultReduction added in v1.1.0

type CalcDefaultReduction[A any] struct {
	PanicOnFallback      bool
	DefaultStopReduction bool
	OnLit                func(x *Lit, agg A) (result A, stop bool)
	OnSum                func(x *Sum, agg A) (result A, stop bool)
	OnMul                func(x *Mul, agg A) (result A, stop bool)
}

func (*CalcDefaultReduction[A]) ReduceLit added in v1.1.0

func (t *CalcDefaultReduction[A]) ReduceLit(x *Lit, agg A) (result A, stop bool)

func (*CalcDefaultReduction[A]) ReduceMul added in v1.1.0

func (t *CalcDefaultReduction[A]) ReduceMul(x *Mul, agg A) (result A, stop bool)

func (*CalcDefaultReduction[A]) ReduceSum added in v1.1.0

func (t *CalcDefaultReduction[A]) ReduceSum(x *Sum, agg A) (result A, stop bool)

type CalcDefaultVisitor added in v1.1.0

type CalcDefaultVisitor[A any] struct {
	Default A
	OnLit   func(x *Lit) A
	OnSum   func(x *Sum) A
	OnMul   func(x *Mul) A
}

func (*CalcDefaultVisitor[A]) VisitLit added in v1.1.0

func (t *CalcDefaultVisitor[A]) VisitLit(v *Lit) any

func (*CalcDefaultVisitor[A]) VisitMul added in v1.1.0

func (t *CalcDefaultVisitor[A]) VisitMul(v *Mul) any

func (*CalcDefaultVisitor[A]) VisitSum added in v1.1.0

func (t *CalcDefaultVisitor[A]) VisitSum(v *Sum) any

type CalcDepthFirstVisitor added in v1.1.0

type CalcDepthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*CalcDepthFirstVisitor[A]) VisitLit added in v1.1.0

func (d *CalcDepthFirstVisitor[A]) VisitLit(v *Lit) any

func (*CalcDepthFirstVisitor[A]) VisitMul added in v1.1.0

func (d *CalcDepthFirstVisitor[A]) VisitMul(v *Mul) any

func (*CalcDepthFirstVisitor[A]) VisitSum added in v1.1.0

func (d *CalcDepthFirstVisitor[A]) VisitSum(v *Sum) any

type CalcReducer added in v1.1.0

type CalcReducer[A any] interface {
	ReduceLit(x *Lit, agg A) (result A, stop bool)
	ReduceSum(x *Sum, agg A) (result A, stop bool)
	ReduceMul(x *Mul, agg A) (result A, stop bool)
}

type CalcVisitor added in v1.1.0

type CalcVisitor interface {
	VisitLit(v *Lit) any
	VisitSum(v *Sum) any
	VisitMul(v *Mul) any
}

type Car

type Car struct{}

func (*Car) Accept

func (r *Car) Accept(v VehicleVisitor) any

type Eq

type Eq struct{ V interface{} }

func (*Eq) Accept

func (r *Eq) Accept(v WherePredicateVisitor) any

type Leaf

type Leaf struct{ Value int }

func (*Leaf) Accept

func (r *Leaf) Accept(v TreeVisitor) any

type Lit added in v1.1.0

type Lit struct{ V int }

func (*Lit) Accept added in v1.1.0

func (r *Lit) Accept(v CalcVisitor) any

type Mul added in v1.1.0

type Mul struct{ Left, Right Calc }

func (*Mul) Accept added in v1.1.0

func (r *Mul) Accept(v CalcVisitor) any

type One added in v1.9.0

type One struct{}

type Or

type Or []WherePredicate

func (*Or) Accept

func (r *Or) Accept(v WherePredicateVisitor) any

type Path

type Path struct {
	Parts     []string
	Condition WherePredicate
	Then      []WherePredicate
	X         Eq
	Y         map[string]WherePredicate
}

func (*Path) Accept

func (r *Path) Accept(v WherePredicateVisitor) any

type Plane

type Plane struct{}

func (*Plane) Accept

func (r *Plane) Accept(v VehicleVisitor) any

type Sum added in v1.1.0

type Sum struct{ Left, Right Calc }

func (*Sum) Accept added in v1.1.0

func (r *Sum) Accept(v CalcVisitor) any

type Tree

type Tree interface {
	Accept(g TreeVisitor) any
}

type TreeBreadthFirstVisitor added in v1.2.0

type TreeBreadthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*TreeBreadthFirstVisitor[A]) VisitBranch added in v1.2.0

func (d *TreeBreadthFirstVisitor[A]) VisitBranch(v *Branch) any

func (*TreeBreadthFirstVisitor[A]) VisitLeaf added in v1.2.0

func (d *TreeBreadthFirstVisitor[A]) VisitLeaf(v *Leaf) any

type TreeDefaultReduction

type TreeDefaultReduction[A any] struct {
	PanicOnFallback      bool
	DefaultStopReduction bool
	OnBranch             func(x *Branch, agg A) (result A, stop bool)
	OnLeaf               func(x *Leaf, agg A) (result A, stop bool)
}

func (*TreeDefaultReduction[A]) ReduceBranch

func (t *TreeDefaultReduction[A]) ReduceBranch(x *Branch, agg A) (result A, stop bool)

func (*TreeDefaultReduction[A]) ReduceLeaf

func (t *TreeDefaultReduction[A]) ReduceLeaf(x *Leaf, agg A) (result A, stop bool)

type TreeDefaultVisitor

type TreeDefaultVisitor[A any] struct {
	Default  A
	OnBranch func(x *Branch) A
	OnLeaf   func(x *Leaf) A
}

func (*TreeDefaultVisitor[A]) VisitBranch

func (t *TreeDefaultVisitor[A]) VisitBranch(v *Branch) any

func (*TreeDefaultVisitor[A]) VisitLeaf

func (t *TreeDefaultVisitor[A]) VisitLeaf(v *Leaf) any

type TreeDepthFirstVisitor

type TreeDepthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*TreeDepthFirstVisitor[A]) VisitBranch

func (d *TreeDepthFirstVisitor[A]) VisitBranch(v *Branch) any

func (*TreeDepthFirstVisitor[A]) VisitLeaf

func (d *TreeDepthFirstVisitor[A]) VisitLeaf(v *Leaf) any

type TreeReducer

type TreeReducer[A any] interface {
	ReduceBranch(x *Branch, agg A) (result A, stop bool)
	ReduceLeaf(x *Leaf, agg A) (result A, stop bool)
}

type TreeVisitor

type TreeVisitor interface {
	VisitBranch(v *Branch) any
	VisitLeaf(v *Leaf) any
}

type Vehicle

type Vehicle interface {
	Accept(g VehicleVisitor) any
}

type VehicleBreadthFirstVisitor added in v1.2.0

type VehicleBreadthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*VehicleBreadthFirstVisitor[A]) VisitBoat added in v1.2.0

func (d *VehicleBreadthFirstVisitor[A]) VisitBoat(v *Boat) any

func (*VehicleBreadthFirstVisitor[A]) VisitCar added in v1.2.0

func (d *VehicleBreadthFirstVisitor[A]) VisitCar(v *Car) any

func (*VehicleBreadthFirstVisitor[A]) VisitPlane added in v1.2.0

func (d *VehicleBreadthFirstVisitor[A]) VisitPlane(v *Plane) any

type VehicleDefaultReduction

type VehicleDefaultReduction[A any] struct {
	PanicOnFallback      bool
	DefaultStopReduction bool
	OnCar                func(x *Car, agg A) (result A, stop bool)
	OnPlane              func(x *Plane, agg A) (result A, stop bool)
	OnBoat               func(x *Boat, agg A) (result A, stop bool)
}

func (*VehicleDefaultReduction[A]) ReduceBoat

func (t *VehicleDefaultReduction[A]) ReduceBoat(x *Boat, agg A) (result A, stop bool)

func (*VehicleDefaultReduction[A]) ReduceCar

func (t *VehicleDefaultReduction[A]) ReduceCar(x *Car, agg A) (result A, stop bool)

func (*VehicleDefaultReduction[A]) ReducePlane

func (t *VehicleDefaultReduction[A]) ReducePlane(x *Plane, agg A) (result A, stop bool)

type VehicleDefaultVisitor

type VehicleDefaultVisitor[A any] struct {
	Default A
	OnCar   func(x *Car) A
	OnPlane func(x *Plane) A
	OnBoat  func(x *Boat) A
}

func (*VehicleDefaultVisitor[A]) VisitBoat

func (t *VehicleDefaultVisitor[A]) VisitBoat(v *Boat) any

func (*VehicleDefaultVisitor[A]) VisitCar

func (t *VehicleDefaultVisitor[A]) VisitCar(v *Car) any

func (*VehicleDefaultVisitor[A]) VisitPlane

func (t *VehicleDefaultVisitor[A]) VisitPlane(v *Plane) any

type VehicleDepthFirstVisitor

type VehicleDepthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*VehicleDepthFirstVisitor[A]) VisitBoat

func (d *VehicleDepthFirstVisitor[A]) VisitBoat(v *Boat) any

func (*VehicleDepthFirstVisitor[A]) VisitCar

func (d *VehicleDepthFirstVisitor[A]) VisitCar(v *Car) any

func (*VehicleDepthFirstVisitor[A]) VisitPlane

func (d *VehicleDepthFirstVisitor[A]) VisitPlane(v *Plane) any

type VehicleReducer

type VehicleReducer[A any] interface {
	ReduceCar(x *Car, agg A) (result A, stop bool)
	ReducePlane(x *Plane, agg A) (result A, stop bool)
	ReduceBoat(x *Boat, agg A) (result A, stop bool)
}

type VehicleVisitor

type VehicleVisitor interface {
	VisitCar(v *Car) any
	VisitPlane(v *Plane) any
	VisitBoat(v *Boat) any
}

type WherePredicate

type WherePredicate interface {
	Accept(g WherePredicateVisitor) any
}

type WherePredicateBreadthFirstVisitor added in v1.2.0

type WherePredicateBreadthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*WherePredicateBreadthFirstVisitor[A]) VisitAnd added in v1.2.0

func (d *WherePredicateBreadthFirstVisitor[A]) VisitAnd(v *And) any

func (*WherePredicateBreadthFirstVisitor[A]) VisitEq added in v1.2.0

func (d *WherePredicateBreadthFirstVisitor[A]) VisitEq(v *Eq) any

func (*WherePredicateBreadthFirstVisitor[A]) VisitOr added in v1.2.0

func (d *WherePredicateBreadthFirstVisitor[A]) VisitOr(v *Or) any

func (*WherePredicateBreadthFirstVisitor[A]) VisitPath added in v1.2.0

func (d *WherePredicateBreadthFirstVisitor[A]) VisitPath(v *Path) any

type WherePredicateDefaultReduction

type WherePredicateDefaultReduction[A any] struct {
	PanicOnFallback      bool
	DefaultStopReduction bool
	OnEq                 func(x *Eq, agg A) (result A, stop bool)
	OnAnd                func(x *And, agg A) (result A, stop bool)
	OnOr                 func(x *Or, agg A) (result A, stop bool)
	OnPath               func(x *Path, agg A) (result A, stop bool)
}

func (*WherePredicateDefaultReduction[A]) ReduceAnd

func (t *WherePredicateDefaultReduction[A]) ReduceAnd(x *And, agg A) (result A, stop bool)

func (*WherePredicateDefaultReduction[A]) ReduceEq

func (t *WherePredicateDefaultReduction[A]) ReduceEq(x *Eq, agg A) (result A, stop bool)

func (*WherePredicateDefaultReduction[A]) ReduceOr

func (t *WherePredicateDefaultReduction[A]) ReduceOr(x *Or, agg A) (result A, stop bool)

func (*WherePredicateDefaultReduction[A]) ReducePath

func (t *WherePredicateDefaultReduction[A]) ReducePath(x *Path, agg A) (result A, stop bool)

type WherePredicateDefaultVisitor

type WherePredicateDefaultVisitor[A any] struct {
	Default A
	OnEq    func(x *Eq) A
	OnAnd   func(x *And) A
	OnOr    func(x *Or) A
	OnPath  func(x *Path) A
}

func (*WherePredicateDefaultVisitor[A]) VisitAnd

func (t *WherePredicateDefaultVisitor[A]) VisitAnd(v *And) any

func (*WherePredicateDefaultVisitor[A]) VisitEq

func (t *WherePredicateDefaultVisitor[A]) VisitEq(v *Eq) any

func (*WherePredicateDefaultVisitor[A]) VisitOr

func (t *WherePredicateDefaultVisitor[A]) VisitOr(v *Or) any

func (*WherePredicateDefaultVisitor[A]) VisitPath

func (t *WherePredicateDefaultVisitor[A]) VisitPath(v *Path) any

type WherePredicateDepthFirstVisitor

type WherePredicateDepthFirstVisitor[A any] struct {
	// contains filtered or unexported fields
}

func (*WherePredicateDepthFirstVisitor[A]) VisitAnd

func (d *WherePredicateDepthFirstVisitor[A]) VisitAnd(v *And) any

func (*WherePredicateDepthFirstVisitor[A]) VisitEq

func (d *WherePredicateDepthFirstVisitor[A]) VisitEq(v *Eq) any

func (*WherePredicateDepthFirstVisitor[A]) VisitOr

func (d *WherePredicateDepthFirstVisitor[A]) VisitOr(v *Or) any

func (*WherePredicateDepthFirstVisitor[A]) VisitPath

func (d *WherePredicateDepthFirstVisitor[A]) VisitPath(v *Path) any

type WherePredicateReducer

type WherePredicateReducer[A any] interface {
	ReduceEq(x *Eq, agg A) (result A, stop bool)
	ReduceAnd(x *And, agg A) (result A, stop bool)
	ReduceOr(x *Or, agg A) (result A, stop bool)
	ReducePath(x *Path, agg A) (result A, stop bool)
}

type WherePredicateVisitor

type WherePredicateVisitor interface {
	VisitEq(v *Eq) any
	VisitAnd(v *And) any
	VisitOr(v *Or) any
	VisitPath(v *Path) any
}

Directories

Path Synopsis
Package ast defines the AST for simple language AST can be created either by parser or by hand, it's up to implementer to decide how to create AST This package provides few examples of AST creation mostly by parsing JSON - ast_sugar.go - ast_human_friendly.go - ast_description_of_best_result Much more advance parser is also possible, but it's not implemented here
Package ast defines the AST for simple language AST can be created either by parser or by hand, it's up to implementer to decide how to create AST This package provides few examples of AST creation mostly by parsing JSON - ast_sugar.go - ast_human_friendly.go - ast_description_of_best_result Much more advance parser is also possible, but it's not implemented here

Jump to

Keyboard shortcuts

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