# @cella-lang/cfamily 中文文档

规范地址：https://npmcn.com/package/%40cella-lang/cfamily/

版本：0\.1\.202611090959
npm 元数据更新时间：2026-11-09T10:00:41.503Z
中文译文更新时间：2026-11-09T07:21:03.467Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cella-lang/cfamily
原文对照：https://npmcn.com/package/%40cella-lang/cfamily/?lang=original
项目主页：https://cella-lang.org/

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

- 包体积（解压后）：15.1 MB，52 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- peer 依赖：cella-lang 0\.1\.202611090954，@cella-lang/machine 0\.1\.202611090959
- 首次发布：2026-10-30T02:58:49.746Z
- 最新版本发布：2026-11-09T10:00:41.319Z
- 近 30 天下载量：12404（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：62（近 12 个月 62 个）

## 中文简介

C11和C++17作为Cella Lang的深层嵌入:一个程序是一个数据值(JSON semorphe sends),有一个类型检查器,报告违法节点出错,一个小步语义相对于一个统一的内存模型,判断(接受,拒绝,未知机智)

## 安装

```sh
npm install @cella-lang/cfamily
```

也可以使用：`pnpm add @cella-lang/cfamily`、`yarn add @cella-lang/cfamily`、`bun add @cella-lang/cfamily`

## README

# {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你还不知道吗 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我

C家族的核心 [单元格a](https://www.npmjs.com/package/cella-lang) 校验器,作为编译模块包: C11和C++17作为深嵌. 一个程序是一个数据值(其语法树的JSON),其类型检查和 执行是该值上的普通函数.

核心没有自己的条目. 使用其三个分支中的一个,每个包都有自己的判断,类型查询和 调试器; 一个分支在它的 `index.json` 先装上.

| 软件包 | 程序 |
| --- | --- |
| `@cella-lang/c` | C11级(`"lang": {"k": "langC"}`(中文(简体) ) |
| `@cella-lang/cpp` | C++17 (简体中文)`"lang": {"k": "langCpp"}`),没有棋盘 |
| `@cella-lang/arduino` | 阿尔杜伊诺板上的C++17(`"board": "uno"`, (中文(简体) ), `"esp32"`, (...) (中文(简体) ) |

软件包互相依赖, 如 `machine` < > 时间 `cfamily` < > 时间 `c`, (中文(简体) ), `cpp` < > 时间 `arduino`。 。 。 .

## 程序

一个程序是JSON的 `cfamily.syntax`数字 : `{"k": "prog", "n": "<node>", "lang": …, "items": […]}`,与 `"board"` 财务报告和审定财务报表 东道主的投入随时间推移`"inputs"`为一相会. 每个构造器都带有编辑器的节点标签 编号(`"n"`),以及裁决,调试器的停止或类型错误命名节点.

文本是主机一侧的Unicode和程序中的UTF-8字节,如crang和gcc:字符串字元,输入和 调试器的种子输入被编码( e)`"é"` 是两个字节, `sizeof("é")` 是 3; 输出为程序的字节 写出,解码,为无效序列使用 U+FFFD .

## 判决

一个分行的 `verdict src input fuel` 返回 :

```json
{"verdict": "reject", "basis": "computed", "exit": null, "out": "",
 "problems": [{"kind": "ubOverflow", "category": "error", "at": "<node>", "clause": "C++17 [expr]p4", "reason": "signed overflow",
               "params": {}, "structured": false}]}
```

-   `verdict`数字 : `accept`· ; `reject` (类型错误,或未定义的行为); `unknown` (标准允许结果 更改输出、模型尚未建构或步骤限制;或 `invalid` (JSON不是一个 程序,或此分支没有程序 : 一张棋盘的 C 程序, C++ 程序发送到 `c`) (中文(简体) ).
-   `basis`数字 : `computed` 当判决来自 管理语义, `kernel` 当两个内核都证明了 (单位:千美元)`kernel_verdict_in` 内 `cella-lang`,随着分支的判决: `kernel_verdict_in("cpp", "cpp.verdict", …)`) (中文(简体) ).
-   `exit`: 退出状态,或 `null` 当程序没有结束.
-   `out`: 标准输出.
-   `problems`:决定拒绝或未知的,每类,类别,节点,标准条款(C11代表C) 程序, C++17 用于 C++ ; C 库是 C11 中的)和理由。 这个类别是6个类别之一,根据这个类别 显示问题 : `error` (程序没有检查,或达到未定义的行为), `unsupported` (a) 建造 模型还没有), `indeterminate` (分级限制,未指明结果), `termination` (单位:千美元)`abort`,一个未被发现 例外), `incomplete` (一个空位)和 `invalid` (JSON不是一个程序). 还有个问题 `params`页:1 细节为字符串和布尔(以十进制为整数;缺少一个未知细节),以及 `structured`: 结构化 问题 `reason` 以同类为原料 `params` (开发者日志;主机读取 `params`),一个没有 结构化 `"params": {}` 财务报告和审定财务报表 `"structured": false`类型,无论每个类型的结构,以及 `params` 结构结构的列表 `verdict-kinds.json` (与此软件包一起发运; C、 C++ 和 Arduino 分枝共享). 一个未申报的名字是 `undeclared` 与 `name`, (中文(简体) ), `what` (单位:千美元)`variable`, (中文(简体) ), `function` 或者说 `name`并且, 当一个标准头目宣布它的时候, `header`。 。 。 . 两通电话,顺序未加说明(C11 6.5.2.2p10,C++17 \[tro.execution\]p11),其影响可能相冲突 命令和各州的比较:区别在于 `ubOrder` 与 `difference` (单位:千美元)`output`: 两个命令是什么 写得不同, `output` 是命令运行, 左到右作为cang, 写在那个点 `otherOutput` 页:1 - 其他的; `state`: 输出相同,其他值尚存; `end`:其中之一没有正常结束). `orderUncompared` 实值 一项可能很重要但未加以比较的命令: `why` 实值 `budget` (比照其预算,燃料的一半)或 `access` (呼叫的效果可能改变通话之外的访问,因为 `x + f()` f 写出 x). 判决 限定词就是这个输入:命令重要的每个点,它与其他命令左到右的两个命令(a) 在其自身的比较中,不作再作比较.
-   `assumes` (总是在那里,没有假设时空着):执行结果的选择取决于, `[{implementation, choice}]`。 。 。 . 库使它们成为libc++所做的(`vector.growth`: 能力和时间 `push_back` 重新分配; `library.what`数字 : 案文 `what()`);选择另一个实施名称(`gcc:union.typePunning`) (中文(简体) ).
-   板上的程序会增加针头、环境和时钟(见 `@cella-lang/arduino`) (中文(简体) ).

## 类型查询

一个分行的 `types src candidates` 解答块编辑器对可能存在漏洞的程序的要求. 一个洞是 `{"k": "eHole", "n": "<node>#<slot>"}` (或 `sHole` 语法需要语句;有孔的程序有: 判决 `unknown` 带有 `hole` 问题. `candidates` 是编为 C 或 C++ 的 JSON 类型数组(`"int"`, (中文(简体) ), `"double"`, (中文(简体) ), `"char *"`, (中文(简体) ), `"std::string"`, (中文(简体) ), `"struct S"`),同样的结果印出它们.

```json
{"nodes": {"<node>": "int"},
 "slots": {"<node>#<slot>": {"display": "expects int", "expects": "int",
                             "fits": {"double": {"level": "narrowing"}, "char *": {"level": "no", "reason": "…"}}}},
 "errors": [{"at": "<node>", "reason": "…"}]}
```

-   `nodes`:每个表达式和声明的种类,在隐含转换之前.
-   `fits`数字 : `exact` (无转换), `convert` (无损失地默示转换), `narrowing` (有损失), `no` (拒之而去,有由也. 类型检查器决定:孔代表候选类型的一个值 关卡来自它周围的转换, 所以超载, `auto` 财务报告和审定财务报表 `std::cout << ?` 遵守真正的规则.
-   `expects`: 当每个适合的类型被转换为同一个类型时,槽的目标类型(`int x = ?`,参数, `return ?`(三); `null` 当空档占用任何东西或取决于候选人时(`std::cout << ?`, (中文(简体) ), `? + 1`,超载 电话). `display` 用于开发者.
-   `errors`: 不检查的语句。 检查在他们之后进行,所以其他节点仍然得到他们的类型.

## 模块

| 区域 | 模块 |
| --- | --- |
| 语法 | `cfamily.syntax` (表面语法), `syntaxtypes`, (中文(简体) ), `syntaxnodes`, (中文(简体) ), `syntaxwalk`, (中文(简体) ), `syntaxcollect` |
| 类型 | `integer` (整数类型), `representation`, (中文(简体) ), `resolution` (书面类型为已解决的), `layout`, (中文(简体) ), `literals`, (中文(简体) ), `rules` (如果方言在同一个构造上有所不同), `typetext` (类型为 C) |
| 检查中 | `typed` (输入的核心语法), `conversion`, (中文(简体) ), `expressions`, (中文(简体) ), `statements`, (中文(简体) ), `lifting`, (中文(简体) ), `scopes`, (中文(简体) ), `statics`, (中文(简体) ), `tables`, (中文(简体) ), `program` |
| 运行 | `memory` (对象、指向路径、目标代表的字节), `arithmetic`, (中文(简体) ), `behavior` (标准留下什么), `state`, (中文(简体) ), `evaluation`, (中文(简体) ), `execution`, (中文(简体) ), `sequencing` (无序访问), `orders` (比较两个电话顺序), `summaries` (一个功能可以读写), `running` (判决程序), `encoding` (文字位于边界) |
| C 图书馆 | `clibrary`, (中文(简体) ), `standardlibrary`, (中文(简体) ), `librarycode` (用 C 书写的函数), `formatting` (印刷品f), `scanning` (扫描,字符串), `files` |
| 调试器 | `debugging` (调试器驱动的机器), `sessions`, (中文(简体) ), `variables` |
| 编辑器 | `querying` (类型查询), `generate` (程序回到源头) |

## 变动

见 `CHANGES.md`。 。 。 .

## 常见问题

### @cella-lang/cfamily 是什么？

C11和C\+\+17作为Cella Lang的深层嵌入:一个程序是一个数据值\(JSON semorphe sends\),有一个类型检查器,报告违法节点出错,一个小步语义相对于一个统一的内存模型,判断\(接受,拒绝,未知机智\)

### 如何安装 @cella-lang/cfamily？

在项目目录运行 npm install @cella-lang/cfamily，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：cella-lang（0\.1\.202611090954）、@cella-lang/machine（0\.1\.202611090959）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @cella-lang/cfamily 支持 TypeScript 吗？

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

### @cella-lang/cfamily 可以商用吗？

@cella-lang/cfamily 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cella-lang/cfamily 的下载量有多少？

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

### @cella-lang/cfamily 还在维护吗？

最新版本 0\.1\.202611090959 发布于 2026/11/09（今天）；至今共发布 62 个版本，其中过去 12 个月发布了 62 个；首次发布于 2026/10/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

