#parser #domain #problem #pddl #robust #goal #object

已删除 spingus

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

1 个不稳定发布

0.1.0 2024年1月31日

#8#pddl

MIT 许可证

61KB
1.5K SLoC

Spingus

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

Spingus 有三个目标

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

示例

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

基准测试

在i5-13600k上使用 Criterion 进行基准测试

吞吐量 解析时间(见 此处
96 MiB/s 4 µs
问题 726 MiB/s 726 ns
计划 727 MiB/s 378 ns

依赖项

~3MB
~23K SLoC