81 lines
1.9 KiB
TypeScript
81 lines
1.9 KiB
TypeScript
|
export type Value = number
|
||
|
| string
|
||
|
| ((...args: Value[]) => Value)
|
||
|
| { [propertyName: string]: Value };
|
||
|
|
||
|
export interface Values {
|
||
|
[propertyName: string]: Value;
|
||
|
}
|
||
|
|
||
|
export interface ParserOptions {
|
||
|
allowMemberAccess?: boolean;
|
||
|
operators?: {
|
||
|
add?: boolean,
|
||
|
comparison?: boolean,
|
||
|
concatenate?: boolean,
|
||
|
conditional?: boolean,
|
||
|
divide?: boolean,
|
||
|
factorial?: boolean,
|
||
|
logical?: boolean,
|
||
|
multiply?: boolean,
|
||
|
power?: boolean,
|
||
|
remainder?: boolean,
|
||
|
subtract?: boolean,
|
||
|
sin?: boolean,
|
||
|
cos?: boolean,
|
||
|
tan?: boolean,
|
||
|
asin?: boolean,
|
||
|
acos?: boolean,
|
||
|
atan?: boolean,
|
||
|
sinh?: boolean,
|
||
|
cosh?: boolean,
|
||
|
tanh?: boolean,
|
||
|
asinh?: boolean,
|
||
|
acosh?: boolean,
|
||
|
atanh?: boolean,
|
||
|
sqrt?: boolean,
|
||
|
log?: boolean,
|
||
|
ln?: boolean,
|
||
|
lg?: boolean,
|
||
|
log10?: boolean,
|
||
|
abs?: boolean,
|
||
|
ceil?: boolean,
|
||
|
floor?: boolean,
|
||
|
round?: boolean,
|
||
|
trunc?: boolean,
|
||
|
exp?: boolean,
|
||
|
length?: boolean,
|
||
|
in?: boolean,
|
||
|
random?: boolean,
|
||
|
min?: boolean,
|
||
|
max?: boolean,
|
||
|
assignment?: boolean,
|
||
|
fndef?: boolean,
|
||
|
cbrt?: boolean,
|
||
|
expm1?: boolean,
|
||
|
log1p?: boolean,
|
||
|
sign?: boolean,
|
||
|
log2?: boolean
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export class Parser {
|
||
|
constructor(options?: ParserOptions);
|
||
|
unaryOps: any;
|
||
|
functions: any;
|
||
|
consts: any;
|
||
|
parse(expression: string): Expression;
|
||
|
evaluate(expression: string, values?: Value): number;
|
||
|
static parse(expression: string): Expression;
|
||
|
static evaluate(expression: string, values?: Value): number;
|
||
|
}
|
||
|
|
||
|
export interface Expression {
|
||
|
simplify(values?: Value): Expression;
|
||
|
evaluate(values?: Value): any;
|
||
|
substitute(variable: string, value: Expression | string | number): Expression;
|
||
|
symbols(options?: { withMembers?: boolean }): string[];
|
||
|
variables(options?: { withMembers?: boolean }): string[];
|
||
|
toJSFunction(params: string, values?: Value): (...args: any[]) => number;
|
||
|
}
|