PDDL parser (work in progress)

A PDDL 3.1 parser implementation in Rust based on nom. See src/briefcase_world.rs for an example.

Parser and domain/problem types can be used separately and will be completely decoupled through crate features in the future.

⚠️ Caveat Emptor

At this point the parser supports all domain and problem definition elements required to fully describe a PDDL 3.1 (and earlier) environment.

However, some enum variants are currently inaccessible to external users of the crate. This is where some work is still required.

Supported Elements

Parsers were implemented based on the BNF elements listed in the paper:

"Complete BNF description of PDDL 3.1 (completely corrected)", Daniel L. Kovacs

Domain Description

Problem Description

Lifting Restrictions

Using embedded modal operators:

Requirements

The following requirements can be parsed. Note that all requirement specific features are parsed unconditionally. A planner needs to ensure that it accepts or rejects a plan accordingly based on the stated domain requirements.