43 个版本 (破坏性更新)

0.31.1 2022年1月12日
0.30.0 2021年8月23日
0.29.1 2021年7月23日
0.28.0 2020年11月13日
0.6.0 2018年11月2日

#1092解析器实现

Download history 1/week @ 2024-03-18 17/week @ 2024-04-01 13/week @ 2024-04-15 4/week @ 2024-04-22 2/week @ 2024-05-27 72/week @ 2024-07-01

每月72次 下载
2 个crate中使用(通过 cop

MIT 协议

165KB
4.5K SLoC

tptp

一个针对 TPTP 格式的解析器 crate

功能

  • nom 解析器提供最大灵活性
  • 高性能、流式、零拷贝解析
  • 便捷抽象:访问者模式、输入迭代器
  • 遵循 TPTP BNF
  • 完全支持 CNF/FOF 方言
  • 不断增长的 TFX 支持

文档和示例

文档在 docs.rsexamples/ 目录包含一些简单的程序。《code>tptp2json/ 包含一个稍微复杂一些的程序,用于通过 serde 将 TPTP 输入转换为 JSON Lines

性能

“足够快”。

非科学的基准测试

$ cargo bench
100000 iterations, 970 bytes of SYN000-1.p
0.74 seconds total (130.54 MB/s).
100000 iterations, 1281 bytes of SYN000+1.p
1.51 seconds total (84.75 MB/s).
100000 iterations, 2420 bytes of SYN000_1.p
2.94 seconds total (82.37 MB/s).
100000 iterations, 5209 bytes of SYN000=2.p
6.38 seconds total (81.68 MB/s).
$

examples/validate 目前在不到4秒内检查了 458MB 的 CSR002+5.ax

限制

由于这是递归下降解析,极深嵌套的结构可能导致栈溢出:这在实践中并没有成为问题。解析器仅在工作内存中的字节上工作:这是设计上的选择。如果你想从某处读取数据,请使用 mmap(2)(适用于大文件)或分块读取数据,直到可以解析输入。请参阅 nom流式文档

依赖项

~1.2–2MB
~40K SLoC