# @fordi-org/bsimp 中文文档

规范地址：https://npmcn.com/package/%40fordi-org/bsimp/

版本：1\.0\.4
npm 元数据更新时间：2023-02-20T23:21:49.418Z
中文译文更新时间：2026-11-15T07:26:55.886Z
软件包许可：ISC

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

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

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

- 包体积（解压后）：2.1 MB，81 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- Node.js 要求：\>=16\.0\.0
- 运行依赖：0 个
- 首次发布：2022-07-26T02:53:21.692Z
- 最新版本发布：2023-02-20T23:21:49.330Z
- 近 30 天下载量：2718（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

布尔表达式简化器

## 安装

```sh
npm install @fordi-org/bsimp
```

也可以使用：`pnpm add @fordi-org/bsimp`、`yarn add @fordi-org/bsimp`、`bun add @fordi-org/bsimp`

## README

# 纯度

布尔表达式简化器

[演示](https://fordi.github.io/bsimp)

## 剖析( 字符串)

将逻辑表达式的字符串表达式转换为表达式对象

```javascript
import { parse } from '@fordi-org/bsimp/parse';

console.log(parse('A+A!B'));
```

> ```
> [
>   Symbol( ∪ ),
>   Symbol(A),
>   [ Symbol( ∩ ), Symbol(A), [ Symbol(!), Symbol(B) ] ]
> ]
> ```

## 至 String( 表达式)

将表达式对象转换为字符串

```javascript
import { parse, toString, SET } from '@fordi-org/bsimp';

console.log(toString(parse('A+A!B'), SET));
console.log(toString(parse('A+A!B'), LOGIC));
console.log(toString(parse('A+A!B'), POLISH));
console.log(toString(parse('A+A!B'), SOURCE));
```

> ```
> A ∪ (A ∖ B)
> A+A!B
> (∪ A (∩ A !B))
> [OR, A, [AND, A, [NOT, B]]]
> ```

## 简化(表达式,\[步骤\])

简化象征布尔的表达式。 可选地通过数组来收集步骤 .

```javascript
import { simplify, parse, toString, LOGIC } from '@fordi-org/bsimp/simplify';

const toSimplify = [
  'A+B!C+C!A',
  'AB!C+ABC+A!B!C+B!A!C',
];

const result = toSimplify.map(expStr => {
  const exp = parse(expStr);
  const steps = [];
  const simple = simplify(exp, steps);
  return {
    simplified: toString(simple, LOGIC),
    steps,
  };
});

console.log(result);
```

> ```
> [ 
>   {
>     simplified: 'A+B+C',
>     steps: [
>       [
>         'absorption',
>         null,
>         [OR, A, [AND, B, [NOT, C]], [AND, C, [NOT, A]]],
>         [OR, A, C, B]
>       ]
>     ]
>   },
>   {
>     simplified: 'AB+A!C+B!C',
>     steps: [...],
>   }
> ]
> ```

步骤的结构是\[`transform`, (中文(简体) ), `parentOperation`, (中文(简体) ), `fromExpr`, (中文(简体) ), `toExpr`\[ \[ \] \[ \] \]. \].

## 符号( termStr)

将字符串转换为符号 。 对于And, or, Not, TRUE, 和FALSE, 这将将字符串转换为内部符号. 对于其他弦,你会得到 `term(termStr)`。 。 。 .

## 术语( termStr)

将字符串转换为符号 。 对于任何以前命名的术语,你会为同一个输入字符串获得相同的符号(这与如何使用不同) `Symbol(termStr)` 作品,因为每个符号都是独一无二的.

* * *

## 表达式对象

形式上...

-   表达式: \[操作器,... Operand\]
-   运算符: 和 QQ 或 NQ NOT
-   行动:TRUE QQ FALSE QQ符号 QQ表达式

也就是说,它是一个阵列,其中第一个元素必须是运算符,以下所有符号必须是操作符. 运算符是符号 `AND`, (中文(简体) ), `OR`,以及 `NOT` (从 `@fordi-org/bsimp`) (中文(简体) ). 操作可以是符号 `TRUE` 或者说 `FALSE`,其他表达式,或任何用户定义的符号.

## 表达式字符串

语法非常宽容,允许使用下列语法:

### 波兰语标记

`{OP} {TERM} {TERM}*`

例如,

`"(and A B C)"` 变成 `[AND, A, B, C]`

### 插件标记

`{TERM} ({OP} {TERM})*`

例如,

`(P | Q | R)` 变成 `[OR, P, Q, R]`

### 初专

解析器能理解Tronary表达式 `CODE` 字符串符知道如何将表达式转换为它们,但是,它们被表达为逻辑组合 `AND`, (中文(简体) ), `OR`,以及 `NOT`十三分之一,如果你不知道, 就像一个如果/然后/ 其它统计, 其中每块是一个名词.

这么说吧, `C ? T : F` 评估到 `[OR, [AND, C, T], [AND, [NOT, C], F]]`。你可以筑巢,但必须将其组合起来以避免模糊.

对三进制的支持旨在帮助将表达式传递到简化符中,而 `CODE` 串接器可以识别并包含这种模式的简单形式,被嵌入的三角体通常会被简化为某种 `CODE` 字符串无法识别(例如, `a ? (b ? c : d) : e` 将变成 `(a && b && c) || (e && !a) || (a && !b && d)`这不理想.

我可能对此做更多的工作,但三者支持最初意在作为投入.

### 隐含和

`{TERM}{TERM}*`

例如,

`XYZ` 变成 `[AND, X, Y, Z]`

注:由于需要隐含和, 解析器将术语限制为单字母、大小写敏感。 简化器没有那么有限,你可以做这样的事情:

```javascript
const [a, b] = [
  term('longName'),
  term('longerName'),
];
const simple = simplify([OR, a, [AND, a, [NOT, b]]]);
```

我所想到的两个使用例是linters的布尔简化符(linter可以选择完全随机的符号名),以及一页上逻辑简化符件(用户可以输入紧逻辑字符串并重新获得其简化符).

* * *

## 发展问题

要运行测试套件:

```
npm run test
```

要编译布尔语法:

```
npm run build:peg
```

为了建立整个事情:

```
npm run build
```

## 常见问题

### @fordi-org/bsimp 是什么？

布尔表达式简化器

### 如何安装 @fordi-org/bsimp？

在项目目录运行 npm install @fordi-org/bsimp，或使用 pnpm add / yarn add / bun add。

### @fordi-org/bsimp 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/fordi-org\_\_bsimp 是否存在。

### @fordi-org/bsimp 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @fordi-org/bsimp 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=16\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @fordi-org/bsimp 可以商用吗？

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

### @fordi-org/bsimp 的下载量有多少？

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

### @fordi-org/bsimp 还在维护吗？

最新版本 1\.0\.4 发布于 2023/02/21（3 年前）；至今共发布 5 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/07/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

