# @danielsimonjr/mathts-expression 中文文档

规范地址：https://npmcn.com/package/%40danielsimonjr/mathts-expression/

版本：0\.12\.7
npm 元数据更新时间：2026-11-11T10:02:58.880Z
中文译文更新时间：2026-11-11T10:42:52.902Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40danielsimonjr/mathts-expression
原文对照：https://npmcn.com/package/%40danielsimonjr/mathts-expression/?lang=original
项目主页：https://github.com/danielsimonjr/MathTS#readme
源码仓库：https://github.com/danielsimonjr/MathTS

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.7 MB，967 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-04-05T04:51:32.033Z
- 最新版本发布：2026-11-11T10:02:58.716Z
- 近 30 天下载量：5215（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：46（近 12 个月 46 个）

## 中文简介

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

## 安装

```sh
npm install @danielsimonjr/mathts-expression
```

也可以使用：`pnpm add @danielsimonjr/mathts-expression`、`yarn add @danielsimonjr/mathts-expression`、`bun add @danielsimonjr/mathts-expression`

## README

# @danielsimonjr/mathts-表达

表达式解析器和评估器 [数学](https://github.com/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`) (中文(简体) ).

## 安装

```sh
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个候选人就检查墙上钟和信号,所以一个能产生出几棵树的语法仍然会迅速停止.

```ts
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 是 由现代浏览器本地排序——没有外部依赖性.

```ts
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 是什么？

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 和提交记录判断。

