UNPKG

pddl-workspace

Version:
64 lines (63 loc) 2.67 kB
import { Variable } from "./language"; export interface EvaluationContext { get(variableName: string): number | boolean | undefined; } export declare class ValueMap extends Map<string, number | boolean> implements EvaluationContext { constructor(...keyValues: Array<string | number | boolean>); static toEntryPairs(keyValues: Array<string | number | boolean>): Iterable<readonly [string, number | boolean]>; } /** * Numeric expression. */ export declare abstract class NumericExpression { abstract getVariables(): Variable[]; abstract evaluate(context: EvaluationContext): number | undefined; getVariableNames(): string[]; } export declare class VariableExpression extends NumericExpression { readonly name: string; readonly variable: Variable; constructor(name: string); getVariables(): Variable[]; evaluate(context: EvaluationContext): number | undefined; } export declare class NumericLiteral extends NumericExpression { readonly value: number; constructor(value: number); getVariables(): Variable[]; evaluate(context: EvaluationContext): number | undefined; } export declare abstract class BinaryExpression extends NumericExpression { readonly operator: string; readonly left: NumericExpression; readonly right: NumericExpression; constructor(operator: string, left: NumericExpression, right: NumericExpression); getVariables(): Variable[]; } export declare abstract class NAryExpression extends NumericExpression { readonly operator: string; readonly children: NumericExpression[]; constructor(operator: string, children: NumericExpression[]); getVariables(): Variable[]; abstract reduce(left: number | undefined, right: number | undefined): number | undefined; abstract identity(): number; evaluate(context: EvaluationContext): number | undefined; } export declare class Sum extends NAryExpression { constructor(children: NumericExpression[]); reduce(left: number | undefined, right: number | undefined): number | undefined; identity(): number; } export declare class Subtraction extends BinaryExpression { constructor(left: NumericExpression, right: NumericExpression); evaluate(context: EvaluationContext): number | undefined; } export declare class Product extends NAryExpression { constructor(children: NumericExpression[]); reduce(left: number | undefined, right: number | undefined): number | undefined; identity(): number; } export declare class Division extends BinaryExpression { constructor(left: NumericExpression, right: NumericExpression); evaluate(context: EvaluationContext): number | undefined; }