@cella-lang/cfamily

中文文档
0.1.202611090959发布于 2026/11/09Apache-2.0零依赖近 30 天下载 1.2万

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

中文使用文档
文档目录5 节
  1. 程序
  2. 判决
  3. 类型查询
  4. 模块
  5. 变动

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

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

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

软件包程序
@cella-lang/cC11级("lang": {"k": "langC"}(中文(简体) )
@cella-lang/cppC++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 返回 :

{"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"),同样的结果印出它们.

{"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 共发布 62 个版本,首次发布于 2026/10/30;过去 12 个月发布了 62 个版本。

版本发布日期距今
0.1.202611090959latest2026/11/09今天
0.1.2026110909542026/11/09今天
0.1.2026110822132026/11/09今天
0.1.2026110809592026/11/081 天前
0.1.2026110805232026/11/081 天前
0.1.2026110804152026/11/081 天前

关于 @cella-lang/cfamily 的常见问题

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