@danielsimonjr/mathts-expression

中文文档
0.12.7发布于 2026/11/11MITTypeScriptES Module近 30 天下载 5215

MathTS 的表达式解析器和评价器

中文使用文档
文档目录4 节
  1. 安装
  2. 它提供的东西
  3. 序列化 AST
  4. 许可证

@danielsimonjr/mathts-表达

表达式解析器和评估器 数学。包根还再导出 MathNode 财务报告和审定财务报表 StringOptions 所用类型 scalarToNode 编号 : scalarToTex 内 @danielsimonjr/mathts-functions。 。 。 .

MathTS的表达引擎:一个解析器(字符串-AST),一个AST节点集,一个编译器,以及一个评价器. 包括一个沙盒getSafeProperty 编号 : getSafeMethod用于安全的财产进入.

对不信任字符串的限制 : 最大长度 1 000 000美元 字符,最大括号 125号 (和 500个 嵌入式无边规则、权力、指派或有条件规则,最大编译深度 512号,哪个 evaluate 在审定之前也适用(见 expression/tests/security/limits.test.ts 财务报告和审定财务报表 docs/api/expression.md) (中文(简体) ).

安装

npm install @danielsimonjr/mathts-expression

它提供的东西

  • createParse 编号 : createParserClass 编号 : createParser - 分析AST.
  • 16 AST节点构造器(createConstantNode, (中文(简体) ), createOperatorNode(中文(简体) ).
  • compile 编号 : createEvaluate 编号 : compileExpression 评估表达式.
  • createScalarBuilder ——建设平板结树(number, (中文(简体) ), symbol, (中文(简体) ), op, (中文(简体) ), call, (中文(简体) ), from) (中文(简体) ). ln 降为自然 log 财务报告和审定财务报表 log 下调为 log10。公式字符串被拒绝。 用 evaluateScalar 从 @danielsimonjr/mathts-functions。 。 。 .
  • scalarCanonical 编号 : scalarCanonicalKey 编号 : scalarSize 编号 : scalarDepth 编号 : scalarComplexity 编号 : scalarSymbols - 现有结构工具包 ScalarNode。峡谷键平坦 + 财务报告和审定财务报表 *,重写 - 财务报告和审定财务报表 /,不折叠 2^3 改为 8。 。 。 .
  • enumerateScalars 编号 : scalarGrammarAccepts - 确定大小,按顺序从语法中取出花生树,由 scalarCanonicalKey。它是返回一个 EnumerationStop 理由(exhausted-space, (中文(简体) ), candidate-limit, (中文(简体) ), time-limit, (中文(简体) ), cancelled) (中文(简体) ). budget.maxCandidates, (中文(简体) ), budget.maxWallClockMs,则 AbortSignal 结束它;每考虑128个候选人就检查墙上钟和信号,所以一个能产生出几棵树的语法仍然会迅速停止.
import { createScalarBuilder, scalarEquals } from '@danielsimonjr/mathts-expression';

const b = createScalarBuilder();
const aa = b.op('*', [b.symbol('a'), b.symbol('a')]);
const aSquared = b.op('^', [b.symbol('a'), b.number(2)]);
console.log(scalarEquals(aa, aSquared)); // true
  • getStringSubset 编号 : setStringSubset ——访问者/指派使用的字符串索引 按职能分列 subset (枪管是唯一的公开入口).
  • 每个节点的 AST 序列器 : toString(), (中文(简体) ), toTex() (拉特克斯语), toHTML(),以及 toMathML() (马来文).
  • 还公布了重点再出口: @danielsimonjr/mathts-{parser,ast,evaluator}。 。 。 .

序列化 AST

每个节点都会被序列化为几种格式. toMathML() 返回数学ML 碎片 (比如说) toTex() 返回 LaTeX 片段,不设分隔符; 把它包起来 <math> 元素为 mathMLDocument(node) 来制作。 数学ML 是 由现代浏览器本地排序——没有外部依赖性.

import { mathMLDocument, mathMLError } from '@danielsimonjr/mathts-expression';

const node = parse('c = 1 / sqrt(eps0 * mu0)'); // parse from the functions package
node.toString(); // 'c = 1 / sqrt(eps0 * mu0)'
node.toTex(); // ' c=\\frac{1}{\\sqrt{ eps0\\cdot mu0}}'
node.toMathML(); // '<mrow><mi>c</mi><mo>=</mo><mfrac>…</mfrac></mrow>'
mathMLDocument(node); // '<math xmlns="…" display="block">…</math>'  (renderable)

mathMLError(src) 生成一个 <math><merror> 用于解析失败的元素.

许可证

MIT (c) 小丹尼尔·西蒙.

版本与发布记录

@danielsimonjr/mathts-expression 共发布 46 个版本,首次发布于 2026/04/05;过去 12 个月发布了 46 个版本。

版本发布日期距今
0.12.7latest2026/11/11今天
0.12.62026/11/10今天
0.12.52026/11/101 天前
0.12.42026/11/092 天前
0.12.32026/11/092 天前
0.12.22026/11/073 天前

关于 @danielsimonjr/mathts-expression 的常见问题

@danielsimonjr/mathts-expression 是什么?

MathTS 的表达式解析器和评价器

如何安装 @danielsimonjr/mathts-expression?

在项目目录运行 npm install @danielsimonjr/mathts-expression,或使用 pnpm add / yarn add / bun add。

@danielsimonjr/mathts-expression 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@danielsimonjr/mathts-expression 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@danielsimonjr/mathts-expression 可以商用吗?

@danielsimonjr/mathts-expression 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@danielsimonjr/mathts-expression 的下载量有多少?

根据 npm 官方下载统计,@danielsimonjr/mathts-expression 在 2026/10/12 – 2026/11/10 这 30 天内被下载 5,215 次,日均约 174 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@danielsimonjr/mathts-expression 还在维护吗?

最新版本 0.12.7 发布于 2026/11/11(今天);至今共发布 46 个版本,其中过去 12 个月发布了 46 个;首次发布于 2026/04/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。