AbstractEvaluator

abstract class AbstractEvaluator<E : ExecutionContext, T : Term>(request: Solve.Request<E>, index: Int?) : TermVisitor<T>

Base TermVisitor for reducing an expression Term to a value of type T, recursively resolving any Struct sub-term whose Signature matches a LogicFunction loaded in request's it.unibo.tuprolog.solve.library.Runtime (loadedFunctions) into that function's Compute.Response.result. A Struct matching no loaded function is handled by unevaluable (by default, an error).

Subclasses customize the exact evaluation semantics via staticCheck (run once per visited term, before recursing into sub-terms) and dynamicCheck (run on each sub-term's already-evaluated result); see ArithmeticEvaluator for a concrete example enforcing ISO arithmetic-expression validity.

Parameters

request

the request of the primitive in which the evaluation should happen

index

the index of the argument being evaluated in the aforementioned primitive

Inheritors

Constructors

Link copied to clipboard
constructor(request: Solve.Request<E>, index: Int?)

Functions

Link copied to clipboard
open override fun defaultValue(term: Term): T
Link copied to clipboard
open fun unevaluable(struct: Struct): Term

Called when struct matches no LogicFunction in loadedFunctions; by default raises a TypeError (TypeError.Expected.EVALUABLE). Overridden by ExpressionReducer to leave non-evaluable sub-terms untouched instead of failing.

Link copied to clipboard
open override fun visitAtom(term: Atom): T
Link copied to clipboard
open fun visitBlock(term: Block): T
Link copied to clipboard
open fun visitClause(term: Clause): T
Link copied to clipboard
open fun visitCollection(term: Recursive): T
Link copied to clipboard
open fun visitCons(term: Cons): T
Link copied to clipboard
open fun visitConstant(term: Constant): T
Link copied to clipboard
open fun visitDirective(term: Directive): T
Link copied to clipboard
open fun visitEmpty(term: Empty): T
Link copied to clipboard
open fun visitEmptyBlock(term: EmptyBlock): T
Link copied to clipboard
open fun visitEmptyList(term: EmptyList): T
Link copied to clipboard
open fun visitFact(term: Fact): T
Link copied to clipboard
open override fun visitIndicator(term: Indicator): T
Link copied to clipboard
open fun visitInteger(term: Integer): T
Link copied to clipboard
open fun visitList(term: List): T
Link copied to clipboard
open fun visitNumeric(term: Numeric): T
Link copied to clipboard
open fun visitReal(term: Real): T
Link copied to clipboard
open fun visitRule(term: Rule): T
Link copied to clipboard
open override fun visitStruct(term: Struct): T
Link copied to clipboard
open override fun visitTerm(term: Term): T
Link copied to clipboard
open fun visitTruth(term: Truth): T
Link copied to clipboard
open fun visitTuple(term: Tuple): T
Link copied to clipboard
open fun visitVar(term: Var): T