/pddl-rs

A PDDL 3.1 parser written in Rust

Primary LanguageRustEuropean Union Public License 1.2EUPL-1.2

PDDL parser (work in progress)

A PDDL 3.1 parser implementation in Rust.

Implemented BNF Elements

Parsers were implemented for the following elements listed in the paper:

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

Domain Description

  • <domain>
  • <require-def>
  • <require-key>
  • <types-def>
  • <constants-def>
  • <predicates-def>
  • <atomic formula skeleton>
  • <predicate>
  • <variable>
  • <atomic function skeleton>
  • <function-symbol>
  • <functions-def>
  • <function typed list (x)>
  • <function type>
  • <constraints>
  • <structure-def>
  • <typed list (x)>
  • <primitive-type>
  • <type>
  • <emptyOr (x)>
  • <action-def>
  • <action-symbol>
  • <action-def body>
  • <pre-GD>
  • <pref-GD>
  • <pref-name>
  • <GD>
  • <f-comp>
  • <literal(t)>
  • <atomic formula(t)>
  • <term>
  • <function-term>
  • <f-exp>
  • <f-head>
  • <binary-op>
  • <multi-op>
  • <binary-comp>
  • <name>
  • <letter>
  • <any char>
  • <number>
  • <digit>
  • <decimal>
  • <effect>
  • <c-effect> (partially implemented; missing :conditional-effects variant)
  • <p-effect> (partially implemented; missing :numeric-fluents and :object-fluents variants)
  • <cond-effect>
  • <assign-op>
  • <durative-action-def>
  • <da-symbol>
  • <da-def body>
  • <da-GD>
  • <pref-timed-GD>
  • <timed-GD>
  • <time-specifier>
  • <interval>
  • <duration-constraint>
  • <simple-duration-constraint>
  • <d-op>
  • <d-value>
  • <da-effect>
  • <timed-effect>
  • <f-assign-da>
  • <f-exp-da>
  • <assign-op-t>
  • <f-exp-t>
  • <derived-def>

Problem Description

  • <problem>
  • <object declaration>
  • <init>
  • <init-el>
  • <basic-function-term>
  • <goal>
  • <constraints>
  • <pref-con-GD>
  • <con-GD>
  • <metric-spec>
  • <optimization>
  • <metric-f-exp>
  • <length-spec>

Lifting Restrictions

  • <con-GD>
  • <con2-GD>

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.

  • :strips
  • :typing
  • :negative-preconditions
  • :disjunctive-preconditions
  • :equality
  • :existential-preconditions
  • :universal-preconditions
  • :quantified-preconditions
  • :conditional-effects
  • :fluents
  • :numeric-fluents
  • :adl
  • :durative-actions
  • :duration-inequalities
  • :continuous-effects
  • :derived-predicates
  • :timed-initial-literals
  • :preferences
  • :constraints
  • :action-costs