tygr 0.3.0

Define your grammar once as Rust types and get a parser, printer, and EBNF presentation for free.
Documentation
name: CI

on:
  push:
    branches: [master]
    paths-ignore:
      - "*.md"
      - ".github/**"
      - "!.github/workflows/**"
  pull_request:
    branches: [master]
    paths-ignore:
      - "*.md"
      - ".github/**"
      - "!.github/workflows/**"

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -D warnings
  RUSTDOCFLAGS: -D warnings

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features:
          - { name: default, flags: "" }
          - { name: no-features, flags: "--no-default-features" }
          - { name: all-features, flags: "--all-features" }
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - uses: Swatinem/rust-cache@v2

      - name: Format
        run: cargo fmt --all --check

      - name: Clippy (${{ matrix.features.name }})
        run: cargo clippy --all-targets ${{ matrix.features.flags }} -- -D warnings

      - name: Test (${{ matrix.features.name }})
        run: cargo test --lib --bins --examples --tests ${{ matrix.features.flags }}

      - name: Doc tests (${{ matrix.features.name }})
        run: cargo test --doc ${{ matrix.features.flags }}

      - name: Docs (${{ matrix.features.name }})
        run: cargo doc --no-deps ${{ matrix.features.flags }}