logicaffeine_language/analysis/mod.rs
1//! Static analysis passes for type and policy discovery.
2//!
3//! This module provides analysis passes that run before or alongside main parsing:
4//!
5//! | Pass | Purpose |
6//! |------|---------|
7//! | [`DiscoveryPass`] | Scans for type definitions (`## Definition` blocks) |
8//! | [`TypeRegistry`] | Stores and looks up type definitions during parsing |
9//! | [`PolicyRegistry`] | Stores security predicates and capability definitions |
10//! | [`scan_dependencies`] | Finds module imports in the document abstract |
11//!
12//! # Usage Order
13//!
14//! 1. Lexer tokenizes the source
15//! 2. [`DiscoveryPass`] scans tokens for type/policy definitions
16//! 3. Parser receives populated [`TypeRegistry`] and [`PolicyRegistry`]
17//! 4. Code generator uses registries for type-aware output
18
19pub mod registry;
20pub mod discovery;
21pub mod dependencies;
22pub mod policy;
23
24pub use registry::{FieldDef, FieldType, TypeDef, TypeRegistry, VariantDef};
25pub use discovery::{DiscoveryPass, DiscoveryResult};
26pub use dependencies::{scan_dependencies, Dependency};
27pub use policy::{PolicyRegistry, PredicateDef, CapabilityDef, PolicyCondition};