8 个版本

0.1.7 2024年6月7日
0.1.6 2024年5月24日
0.1.4 2024年4月8日
0.1.3 2024年2月20日

#31 in 机器人

每月 46 次下载
2 crates 中使用

自定义许可证

32KB
838 代码行

pddlp

Rust

GitHub last commit (branch) GitHub commit activity (branch)

Crates.io Version Crates.io Total Downloads

一个简单、快速且健壮的 PDDL 解析器

pddlp 有三个目标

  • 健壮 - 在常用的 PDDL 领域和问题上进行了测试
  • 快速 - 优化并基准测试,尽可能快
  • 简单 - 为了易于使用,避免使用不常用的 PDDL 语法

示例

let input = "(define (problem prob)
                  (:objects o1)
                  (:init (p o1))
                  (:goal (not (p o3)))
             )";
let problem = pddlp::problem::parse(&input)?;
assert_eq!(problem.name, Some("prob"));
assert_eq!(problem.domain, None);
assert_eq!(problem.objects, Some(vec![pddlp::problem::Object { name: "o1", type_name: None }]));
//...

基准测试

在 AMD Ryzen 5 5600X 6 核处理器 × 6 上进行基准测试,使用 Criterion

吞吐量 解析时间(见此处
领域 436 MiB/s 2 µs
问题 468 MiB/s 523 ns
计划 507 MiB/s 93 ns

依赖项

~3.5MB
~55K SLoC