params

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2025 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package params provides Ale language parameter parsing

Index

Constants

View Source
const (
	// ErrNoCasesDefined is raised when a call to Lambda doesn't include any
	// parameter cases definitions.
	ErrNoCasesDefined = "no parameter cases defined"

	// ErrUnexpectedCaseSyntax is raised when a call to Lambda doesn't include
	// a proper parameter case initializer. If it first encounters a Vector,
	// the parsing will assume multiple parameter cases, otherwise it will
	// assume a single parameter case
	ErrUnexpectedCaseSyntax = "unexpected case syntax: %s"

	// ErrUnexpectedParamSyntax is raised when a Lambda parameter case is
	// represented by an unexpected syntax. Valid syntax representations are
	// data.List, data.Cons, or data.Local
	ErrUnexpectedParamSyntax = "unexpected parameter syntax: %s"

	// ErrNoCaseBodyDefined is raised when a Lambda parameter case defines its
	// parameters, but not an associated body to evaluate
	ErrNoCaseBodyDefined = "no parameter case body: %s"

	// ErrUnreachableCase is raised when a Lambda parameter is defined that
	// would otherwise be impossible to reach given previous definitions
	ErrUnreachableCase = "unreachable parameter case: %s"

	// ErrUnmatchedCase is raised when a Lambda is called and the number of
	// arguments provided doesn't match any of the declared parameter cases
	ErrUnmatchedCase = "got %d arguments, expected %s"

	// ErrNoMatchingParamPattern is raised when none of the parameter patterns
	// for a Lambda were capable of being matched
	ErrNoMatchingParamPattern = "no matching parameter pattern"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ArgFetcher

type ArgFetcher func(data.Vector) (data.Vector, bool)

type ParamCase

type ParamCase struct {
	Signature ale.Value
	Body      data.Sequence
	Params    data.Locals
	Rest      bool
}

type ParamCases

type ParamCases struct {
	Cases   []*ParamCase
	Fixed   []uint8
	HasRest bool
	LowRest int
}

func ParseCases

func ParseCases(s data.Sequence) (*ParamCases, error)

func (*ParamCases) MakeArgFetchers

func (pc *ParamCases) MakeArgFetchers() []ArgFetcher

func (*ParamCases) MakeArityChecker

func (pc *ParamCases) MakeArityChecker() data.ArityChecker

Jump to

Keyboard shortcuts

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