pip-services4-expressions-node
Version:
Tokenizers, parsers and expression calculators in Node.js / ES2017
99 lines (98 loc) • 3.23 kB
TypeScript
/** @module calculator */
import { IVariableCollection } from "./variables/IVariableCollection";
import { IFunctionCollection } from "./functions/IFunctionCollection";
import { ExpressionToken } from "./parsers/ExpressionToken";
import { IVariantOperations } from "../variants/IVariantOperations";
import { Token } from "../tokenizers/Token";
import { Variant } from "../variants/Variant";
/**
* Implements an expression calculator class.
*/
export declare class ExpressionCalculator {
private _defaultVariables;
private _defaultFunctions;
private _variantOperations;
private _parser;
private _autoVariables;
/**
* Constructs this class and assigns expression string.
* @param expression The expression string.
*/
constructor(expression?: string);
/**
* The expression string.
*/
get expression(): string;
/**
* The expression string.
*/
set expression(value: string);
get originalTokens(): Token[];
set originalTokens(value: Token[]);
/**
* Gets the flag to turn on auto creation of variables for specified expression.
*/
get autoVariables(): boolean;
/**
* Sets the flag to turn on auto creation of variables for specified expression.
*/
set autoVariables(value: boolean);
/**
* Gets the manager for operations on variant values.
*/
get variantOperations(): IVariantOperations;
/**
* Sets the manager for operations on variant values.
*/
set variantOperations(value: IVariantOperations);
/**
* The list with default variables.
*/
get defaultVariables(): IVariableCollection;
/**
* The list with default functions.
*/
get defaultFunctions(): IFunctionCollection;
/**
* The list of original expression tokens.
*/
get initialTokens(): ExpressionToken[];
/**
* The list of processed expression tokens.
*/
get resultTokens(): ExpressionToken[];
/**
* Populates the specified variables list with variables from parsed expression.
* @param variables The list of variables to be populated.
*/
createVariables(variables: IVariableCollection): void;
/**
* Cleans up this calculator from all data.
*/
clear(): void;
/**
* Evaluates this expression using default variables and functions.
* @returns the evaluation result.
*/
evaluate(): Promise<Variant>;
/**
* Evaluates this expression using specified variables.
* @param variables The list of variables
* @returns the evaluation result
*/
evaluateWithVariables(variables: IVariableCollection): Promise<Variant>;
/**
* Evaluates this expression using specified variables and functions.
* @param variables The list of variables
* @param functions The list of functions
* @returns the evaluation result
*/
evaluateWithVariablesAndFunctions(variables: IVariableCollection, functions: IFunctionCollection): Promise<Variant>;
private evaluateConstant;
private evaluateVariable;
private evaluateFunction;
private evaluateLogical;
private evaluateArithmetical;
private evaluateBoolean;
private evaluateOther;
}