//! Expression parsing for Fermented UnrealScript.
//!
//! This module group implements the language's expression parser around a
//! Pratt-style core. It is split into small submodules by role: precedence,
//! identifiers, literals, selectors, block bodies, keyword-led/control-flow
//! forms, primary-expression dispatch, and the Pratt driver itself.
//!
//! The parser is designed to keep building a best-effort AST on malformed
//! input. Syntax problems are reported through diagnostics, while committed
//! parsers recover locally and return fallback nodes or partial structures when
//! necessary.
//!
//! ## Expression layering
//!
//! The parser distinguishes several layers of expression parsing:
//!
//! - **primaries**: forms that can be parsed directly from the current token,
//!     without an already parsed left-hand side;
//! - **selectors**: suffix continuations such as member access, indexing, and
//!     calls, which require a left-hand side;
//! - **prefix / postfix / infix operators**: handled by the Pratt parser using
//!     precedence ranks.

mod block; // `{ ... }` block-body parsing and block/expression item handling.
mod control_flow; // `if`, `while`, `do`, `foreach`, `for`, `return`, etc.
mod identifier; // Identifier and qualified-name parsing helpers.
mod literals; // Literal decoding and literal-specific parsing utilities.
mod pratt; // Top-level Pratt driver.
mod precedence; // Operator precedence ranks and Pratt binding rules.
mod primary; // Primary-expression parsing and keyword-vs-identifier dispatch.
mod selectors; // Suffix continuations: member access, indexing, and calls.
mod switch; // `switch (...) { ... }` parsing and arm/body recovery.
