tygr 0.3.0

Define your grammar once as Rust types and get a parser, printer, and EBNF presentation for free.
Documentation
# Contributing to tygr

Thanks for your interest in improving tygr!

## Open an issue first

Please open an issue before starting work on a pull request (PR). PRs without a linked issue will
be asked to open one. Submit PRs from a fork.

## Development

Standard Cargo workflow:

```sh
cargo build                                   # build
cargo test --all-targets                      # run tests
cargo test --doc                              # run doc tests
cargo fmt --all                               # format
cargo clippy --all-targets -- -D warnings     # lint
cargo doc --no-deps                           # build docs
```

CI runs `fmt --check`, `clippy`, `test`, doc tests, and `doc` across the
`default`, `--no-default-features`, and `--all-features` feature sets.

## Releasing

`tygr` and `tygr-derive` are versioned in lockstep. To publish a new release:

```sh
# 1. Bump `version` in both Cargo.toml and tygr-derive/Cargo.toml to the same value.
# 2. Commit, then tag and push:
git add Cargo.toml tygr-derive/Cargo.toml
git commit -m "Release X.Y.Z"
git tag vX.Y.Z
git push origin master
git push origin vX.Y.Z
```

Pushing the tag triggers [`.github/workflows/publish.yml`](.github/workflows/publish.yml),
which checks the tag against both `Cargo.toml` versions, runs the test suite,
then publishes `tygr-derive` before `tygr` (in that order, since `tygr`
depends on it).

## License

By contributing, you agree that your contributions will be dual licensed under
the [Apache-2.0](LICENSE-APACHE) and [MIT](LICENSE-MIT) licenses, without any
additional terms or conditions.