Skip to content

A Planning Domain Definition Language (PDDL 3.1) parser written in Rust

License

Notifications You must be signed in to change notification settings

sunsided/pddl-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDDL parser (work in progress)

GitHub Workflow Status docs.rs Crates.io Crates.io

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, since types and enum variants are named closely to the underlying BNF descriptions (see below), they may be a bit unwieldy to use still.

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

Additional elements were added based on the individual specification papers.

Domain Description

Additional elements:

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.