![Workflow](https://github.com/mrrobb/pddl-parser/actions/workflows/main.yml/badge.svg) [![codecov](https://codecov.io/gh/MrRobb/pddl-parser/branch/nom/graph/badge.svg?token=2Q2DJWGE2H)](https://codecov.io/gh/MrRobb/pddl-parser) # PDDL Parser Parser for PDDL (Planning Domain Definition Language) files. ## Usage Add this to your `Cargo.toml`: ```toml pddl-parser = "0.1.0" ``` ## Example ```rust use pddl_parser::domain::Domain; fn main() { let domain_file = include_str!("../tests/domain.pddl"); let domain = Domain::parse(domain_file); domain.predicates.iter().for_each(|p| println!("{:?}", p.name)); } ``` ## PDDL Requirements supported - [x] :strips - [x] :typing - [ ] :equality - [ ] :fluents - [ ] :adl - [ ] :durative-actions - [ ] :derived-predicates - [ ] :numeric-fluents - [ ] :preferences - [ ] :constraints - [ ] :action-costs - [ ] :conditional-effects - [ ] :probabilistic-effects - [ ] :reward-effects ## Contributing ### TODO - [x] Parsing: - [x] Support PDDL domain parsing - [x] Support PDDL problem parsing - [x] Support PDDL plan parsing - [ ] PDDL Features - [ ] Better support for types (assign types to variables, etc.) - [x] Testing: - [x] Add tests for all PDDL files in [pddl-instances](https://github.com/potassco/pddl-instances) - [x] Error handling: - [x] Custom errors (using [thiserror](https://crates.io/crates/thiserror)) - [x] Forbid unwrap - [x] Check that all of the input has been consumed - [ ] Documentation: - [ ] Add documentation for all public items