ifc-expressions
Version:
Parsing and evaluation of IFC expressions
19 lines (18 loc) • 1.38 kB
TypeScript
import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
import { ExprBase } from "./ExprBase.js";
import { ExprKind } from "./ExprKind.js";
import { ExprEvalError, ExprEvalResult } from "./ExprEvalResult.js";
import { Expr } from "./Expr.js";
export declare abstract class Expr2<L, R, E> extends ExprBase<E> {
readonly left: Expr<L>;
readonly right: Expr<R>;
protected constructor(exprKind: ExprKind, left: Expr<L>, right: Expr<R>);
getChildren(): Array<Expr<any>>;
protected abstract calculateResult(ctx: IfcExpressionContext, localCtx: Map<string, any>, leftOperand: L, rightOperand: R): E | ExprEvalError;
protected onBeforeRecursion(ctx: IfcExpressionContext, localCtx: Map<string, any>): void;
protected onAfterLeftRecursion(ctx: IfcExpressionContext, localCtx: Map<string, any>, leftResult: L): void;
evaluate(ctx: IfcExpressionContext, localCtx: Map<string, any>): ExprEvalResult<E>;
protected makeResultForRightSubExprError(ctx: IfcExpressionContext, localCtx: Map<string, any>, leftResult: ExprEvalResult<L>, rightResult: ExprEvalError): ExprEvalResult<E>;
protected makeErrorForLeftSubExprError(ctx: IfcExpressionContext, localCtx: Map<string, any>, leftResult: ExprEvalError): ExprEvalError;
protected handleError(error: any, leftResult: ExprEvalResult<L>, rightResult: ExprEvalResult<R>): ExprEvalError;
}