common

package
v0.0.0-...-50d4735 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2024 License: Apache-2.0, BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package common defines types and utilities common to expression parsing, checking, and interpretation

Index

Constants

View Source
const (
	// SelectAndIdentCost is the cost of an operation that accesses an identifier or performs a select.
	SelectAndIdentCost = 1

	// ConstCost is the cost of an operation that accesses a constant.
	ConstCost = 0

	// ListCreateBaseCost is the base cost of any operation that creates a new list.
	ListCreateBaseCost = 10

	// MapCreateBaseCost is the base cost of any operation that creates a new map.
	MapCreateBaseCost = 30

	// StructCreateBaseCost is the base cost of any operation that creates a new struct.
	StructCreateBaseCost = 40

	// StringTraversalCostFactor is multiplied to a length of a string when computing the cost of traversing the entire
	// string once.
	StringTraversalCostFactor = 0.1

	// RegexStringLengthCostFactor is multiplied ot the length of a regex string pattern when computing the cost of
	// applying the regex to a string of unit cost.
	RegexStringLengthCostFactor = 0.25
)

Variables

View Source
var (

	// NoLocation is a particular illegal location.
	NoLocation = &SourceLocation{-1, -1}
)

Functions

This section is empty.

Types

type Error

type Error struct {
	Location Location
	Message  string
	ExprID   int64
}

Error type which references an expression id, a location within source, and a message.

func NewError

func NewError(id int64, message string, location Location) *Error

NewError creates an error associated with an expression id with the given message at the given location.

func (*Error) ToDisplayString

func (e *Error) ToDisplayString(source Source) string

ToDisplayString decorates the error message with the source location.

type Errors

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

Errors type which contains a list of errors observed during parsing.

func NewErrors

func NewErrors(source Source) *Errors

NewErrors creates a new instance of the Errors type.

func (*Errors) Append

func (e *Errors) Append(errs []*Error) *Errors

Append creates a new Errors object with the current and input errors.

func (*Errors) GetErrors

func (e *Errors) GetErrors() []*Error

GetErrors returns the list of observed errors.

func (*Errors) ReportError

func (e *Errors) ReportError(l Location, format string, args ...any)

ReportError records an error at a source location.

func (*Errors) ReportErrorAtID

func (e *Errors) ReportErrorAtID(id int64, l Location, format string, args ...any)

ReportErrorAtID records an error at a source location and expression id.

func (*Errors) ToDisplayString

func (e *Errors) ToDisplayString() string

ToDisplayString returns the error set to a newline delimited string.

type Location

type Location interface {
	Line() int   // 1-based line number within source.
	Column() int // 0-based column number within source.
}

Location interface to represent a location within Source.

func NewLocation

func NewLocation(line, column int) Location

NewLocation creates a new location.

type Source

type Source interface {
	// Content returns the source content represented as a string.
	// Examples contents are the single file contents, textbox field,
	// or url parameter.
	Content() string

	// Description gives a brief description of the source.
	// Example descriptions are a file name or ui element.
	Description() string

	// LineOffsets gives the character offsets at which lines occur.
	// The zero-th entry should refer to the break between the first
	// and second line, or EOF if there is only one line of source.
	LineOffsets() []int32

	// LocationOffset translates a Location to an offset.
	// Given the line and column of the Location returns the
	// Location's character offset in the Source, and a bool
	// indicating whether the Location was found.
	LocationOffset(location Location) (int32, bool)

	// OffsetLocation translates a character offset to a Location, or
	// false if the conversion was not feasible.
	OffsetLocation(offset int32) (Location, bool)

	// NewLocation takes an input line and column and produces a Location.
	// The default behavior is to treat the line and column as absolute,
	// but concrete derivations may use this method to convert a relative
	// line and column position into an absolute location.
	NewLocation(line, col int) Location

	// Snippet returns a line of content and whether the line was found.
	Snippet(line int) (string, bool)
}

Source interface for filter source contents.

func NewInfoSource

func NewInfoSource(info *exprpb.SourceInfo) Source

NewInfoSource creates a new Source from a SourceInfo.

func NewStringSource

func NewStringSource(contents string, description string) Source

NewStringSource creates a new Source from the given contents and description.

func NewTextSource

func NewTextSource(text string) Source

NewTextSource creates a new Source from the input text string.

type SourceLocation

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

SourceLocation helper type to manually construct a location.

func (*SourceLocation) Column

func (l *SourceLocation) Column() int

Column returns the 0-based column number of the location.

func (*SourceLocation) Line

func (l *SourceLocation) Line() int

Line returns the 1-based line of the location.

Directories

Path Synopsis
Package ast declares data structures useful for parsed and checked abstract syntax trees
Package ast declares data structures useful for parsed and checked abstract syntax trees
Package containers defines types and functions for resolving qualified names within a namespace or type provided to CEL.
Package containers defines types and functions for resolving qualified names within a namespace or type provided to CEL.
Package debug provides tools to print a parsed expression graph and adorn each expression element with additional metadata.
Package debug provides tools to print a parsed expression graph and adorn each expression element with additional metadata.
Package decls contains function and variable declaration structs and helper methods.
Package decls contains function and variable declaration structs and helper methods.
Package functions defines the standard builtin functions supported by the interpreter
Package functions defines the standard builtin functions supported by the interpreter
Package operators defines the internal function names of operators.
Package operators defines the internal function names of operators.
Package overloads defines the internal overload identifiers for function and operator overloads.
Package overloads defines the internal overload identifiers for function and operator overloads.
Package runes provides interfaces and utilities for working with runes.
Package runes provides interfaces and utilities for working with runes.
Package stdlib contains all of the standard library function declarations and definitions for CEL.
Package stdlib contains all of the standard library function declarations and definitions for CEL.
Package types contains the types, traits, and utilities common to all components of expression handling.
Package types contains the types, traits, and utilities common to all components of expression handling.
pb
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
ref
Package ref contains the reference interfaces used throughout the types components.
Package ref contains the reference interfaces used throughout the types components.
traits
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch.
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch.

Jump to

Keyboard shortcuts

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