import type { ExpressionRunParam } from './ExpressionDefinition'; import { type ITokenTree } from './language'; import { Runtime } from './runtime'; export declare class Expression { private lang; private runtime; private keywordPatten; private tokenPatten; private numberPatten; private stringPatten; private commentsPatten; private symbolPatten; private blankPatten; private newLinePatten; private endPatten; private blockPatten; private fullBlockPatten; private tokenBlockPatten; private bracketsBlockPatten; private ternaryBlockPatten; private calculateBlockPatten; private defineBlockExpression; private memberBlockExpression; private functionCallBlockPatten; private selectBlockPatten; private arrayVariablePatten; private functionBlockPatten; private returnBlockPatten; private execVariable; private execEnd; private execBrackets; private execTernary; private execSet; private execDefine; private operatorDefine; private execMember; private execCalculate; private execFunctionCall; private execSelect; private execFunctionDefine; private execReturn; constructor(); compile(source: string): ITokenTree | undefined; rawExec(node: ITokenTree): unknown; exec(source: string): unknown; getRuntime(): Runtime; private static instance; static getInstance: () => Expression; registerFunction(name: string, argTypes: unknown[], handle: Function): void; initExpressionContext(activeRecords: Record[] | undefined, rootRecord: Record | undefined, openerRecord: Record | undefined, scene: string | null, activeRecord?: Record | null, parentRecord?: Record | null): void; cleanupExpressionContext(activeRecord?: Record): void; static run(param: ExpressionRunParam, expression: string, errorValue?: T): T | string | undefined; static replaceRun(param: ExpressionRunParam, content: string): string; /** * 是否有表达式的内置关键字 * 注意:字符串的true、false需要通过表达式转换才能变成布尔类型的,布尔类型的地方不要用此方法判断,像field.label这种字符串类型的可以用 * @param expression * @private */ static hasKeywords(expression: string): boolean; /** * 获取表达式的真实字符串,为提高性能,将表达式用${}包裹 * @param expression */ static getExpressionStr(expression: string): string; static isExpressionStr(expression: string): boolean; }