[![Build Status](https://github.com/sthiele/flatzinc-parser/workflows/CI%20test/badge.svg)](https://github.com/sthiele/flatzinc-parser)
[![Latest Version](https://img.shields.io/crates/v/flatzinc.svg)](https://crates.io/crates/flatzinc)
[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/flatzinc)
# flatzinc
A parser for the [FlatZinc](https://www.minizinc.org/doc-2.4.3/en/fzn-spec.html#specification-of-flatzinc) modelling language version 2.4.3.
## Compile
```text
❯ cargo build --release
```
## Usage
In your Cargo.toml
```toml
[dependencies]
flatzinc = "0.1"
```
In your code:
```rust
use nom::error::{convert_error, VerboseError};
use nom::Err;
use flatzinc
match flatzinc::model::<VerboseError<&str>>(&buf) {
Ok((_, result)) => println!("{:#?}", result),
Err(Err::Error(e)) | Err(Err::Failure(e)) => {
println!("Failed to parse flatzinc!\n{}", convert_error(&buf, e))
}
Err(e) => println!("Failed to parse flatzinc: {:?}", e),
}
```
## fz-parser
An example parser can be found in the `examples/fz-parser.rs`
To run the parser call:
```text
❯ cargo run --example fz-parser -- -i jobshop.fzn
```
The binary can be found under `target/release/examples/fz-parser`
## FAQ
- [How to create flatzinc from minizinc?](https://github.com/MiniZinc/libminizinc/issues/342)