73 lines
1.5 KiB
TypeScript
73 lines
1.5 KiB
TypeScript
/**
|
|
* @report/expression 公共入口(对应设计文档 §4.2、§10)。
|
|
*
|
|
* 表达式系统使用受限语法和 AST,不执行任意 JavaScript。
|
|
* 本包只依赖 @report/core 的类型,不依赖 DOM 或任何求值框架。
|
|
*/
|
|
|
|
// 词法
|
|
export type { Token, TokenType, TokenizeError, TokenizeResult } from "./tokenizer.js"
|
|
export { tokenize, KEYWORDS } from "./tokenizer.js"
|
|
|
|
// AST
|
|
export type {
|
|
ExpressionNode,
|
|
NodeType,
|
|
SourceSpan,
|
|
LiteralNode,
|
|
IdentifierNode,
|
|
MemberNode,
|
|
IndexNode,
|
|
CallNode,
|
|
UnaryNode,
|
|
BinaryNode,
|
|
LogicalNode,
|
|
ConditionalNode,
|
|
ParseError,
|
|
ParseResult,
|
|
} from "./ast.js"
|
|
export {
|
|
walkNode,
|
|
collectRootIdentifiers,
|
|
collectFunctionNames,
|
|
printNode,
|
|
} from "./ast.js"
|
|
|
|
// 语法
|
|
export { parse, isValidExpression, allowedFunctionNames } from "./parser.js"
|
|
|
|
// 作用域
|
|
export type { EvalScope, ScopeRoot } from "./scope.js"
|
|
export { SCOPE_ROOTS, resolveRoot, safeGet } from "./scope.js"
|
|
|
|
// 内置函数
|
|
export type { BuiltinFunction } from "./builtins.js"
|
|
export { BUILTINS, isBuiltinFunction, builtinFunctionNames } from "./builtins.js"
|
|
|
|
// 求值
|
|
export type {
|
|
EvalOptions,
|
|
EvalResult,
|
|
CompiledExpression,
|
|
} from "./evaluator.js"
|
|
export {
|
|
evaluateAst,
|
|
evaluateExpression,
|
|
evaluateCompiled,
|
|
evaluateValue,
|
|
compile,
|
|
} from "./evaluator.js"
|
|
|
|
// 绑定
|
|
export type {
|
|
ResolveBindingOptions,
|
|
ResolveBindingResult,
|
|
} from "./binding.js"
|
|
export {
|
|
ExpressionCache,
|
|
resolveBinding,
|
|
formatValue,
|
|
fieldToExpression,
|
|
isBindingEmpty,
|
|
} from "./binding.js"
|