pddl-parser 0.2.3

A Rust library for parsing PDDL files
Documentation
![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