haz-query-lang 0.2.0

Parser and AST for the haz task query language.
Documentation
//! Boolean filter-expression grammar for `haz`.
//!
//! `haz-query-lang` is a self-contained recursive-descent parser
//! for the per-flag filter expressions consumed by `haz query`
//! (see the `QRY-*` rules). The grammar is the five-line shape
//!
//! ```ebnf
//! Expr   ::= Or
//! Or     ::= And ("|" And)*
//! And    ::= Not ("&" Not)*
//! Not    ::= "!"? Atom
//! Atom   ::= "(" Expr ")" | Token
//! ```
//!
//! The crate is intentionally domain-free: a parsed atom is
//! returned as a raw `(text, span)` pair, leaving identifier,
//! path-pattern, and relational-kind validation to the
//! consumer (`haz-query`). This keeps the language layer
//! reusable across attribute kinds and avoids a dependency on
//! workspace-domain types.
//!
//! # Module map
//!
//! - [`span`]: byte-offset spans into the parsed input
//!   ([`span::Span`]).
//! - [`expr`]: the syntax tree ([`expr::Expr`],
//!   [`expr::RawAtom`]).
//! - [`error`]: parser-level failures ([`error::ParseError`]).
//! - [`parser`]: the [`parser::parse`] entry point.

#![deny(missing_docs)]

pub mod error;
pub mod expr;
pub mod parser;
pub mod span;