plotnik_compiler/compile/mod.rs
1//! Thompson-like NFA construction for query compilation.
2//!
3//! Compiles query AST expressions into bytecode IR with symbolic labels.
4//! Labels are resolved to concrete StepIds during the layout phase.
5//! Member indices use deferred resolution via MemberRef for correct absolute indices.
6//!
7//! # Module Organization
8//!
9//! The compiler is split into focused modules:
10//! - `capture`: Capture effects handling (Node/Text + Set)
11//! - `expressions`: Leaf expression compilation (named/anon nodes, refs, fields, captures)
12//! - `navigation`: Navigation mode computation for anchors and quantifiers
13//! - `quantifier`: Unified quantifier compilation (*, +, ?)
14//! - `scope`: Scope management for struct/array wrappers
15//! - `sequences`: Sequence and alternation compilation
16
17mod capture;
18mod collapse_prefix;
19mod collapse_up;
20mod compiler;
21mod dce;
22pub(crate) mod epsilon_elim;
23mod error;
24mod expressions;
25mod lower;
26mod navigation;
27mod quantifier;
28mod scope;
29mod sequences;
30mod verify;
31
32#[cfg(test)]
33mod capture_tests;
34#[cfg(test)]
35mod collapse_up_tests;
36#[cfg(test)]
37mod compile_tests;
38#[cfg(test)]
39mod lower_tests;
40
41pub use capture::CaptureEffects;
42pub use compiler::{CompileCtx, Compiler};
43pub use error::{CompileError, CompileResult};