pddl-workspace
Version:
64 lines (63 loc) • 2.67 kB
TypeScript
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;
}