24 个版本 (15 个重大更新)
使用旧的 Rust 2015
0.20.0 | 2017 年 9 月 3 日 |
---|---|
0.19.0 | 2017 年 8 月 30 日 |
0.17.0 | 2017 年 7 月 31 日 |
#1100 在 数据结构
165KB
1.5K SLoC
此仓库包含 Annotated Term (ATerm) 格式在 Rust 中的实现。
注释术语
我认为 ATerms 最初之所以如此重要,是因为有任意树垃圾回收 C 实现的便利性,具有 最大共享。现在这似乎更像是一个遗留格式。你仍然可以在网上找到旧的 ATerm 指南,但我将简要回顾格式。
格式回顾
此格式编码树。树的叶可以是
- 整数 (
i32
) - 长整型 (
i64
,规范中为可选) - 字符串 (
String
[^*]) - 实数 (
f32
) - 数据块 (
Vec<u8>
,尽管当你需要这个时,ATerm 真的是你需要的吗?) - 占位符 (
TermPlaceholder
,用于遗留模式接口的带类型空穴)
树是通过构造函数的 应用 来构建的。构造函数只是一个字母数字名称或一个引号字符串。构造函数的应用可以有零个或多个子节点。
还有专门的列表,主要是因为它们有自己的语法。
元组是空构造函数的应用。
[^*]: 实际上它们只是零子节点的引号构造函数
对了,它们是 注释的:每个术语都可以有一个注释列表,这些注释也是术语。列表和构造函数应用也被视为术语,所以基本上一切都可以有注释。
功能
Rust 实现具有以下功能/待办事项
- 长整型
- 读取/写入 ASCII(文本 aterms)
- 实用函数?(一些待办事项:#7)
- 最大共享(一些待办事项:#3)
- 读取/写入 TAF #4
- 读取/写入 BAF #5
- 读取/写入 SAF #6
依赖项
~3.5MB
~72K SLoC