24 个版本 (15 个重大更新)

使用旧的 Rust 2015

0.20.0 2017 年 9 月 3 日
0.19.0 2017 年 8 月 30 日
0.17.0 2017 年 7 月 31 日

#1100数据结构

MIT/Apache

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