plotnik_compiler/analyze/
mod.rs

1//! Semantic analysis passes.
2//!
3//! Provides analysis passes that transform parsed AST into analyzed form:
4//! - Name resolution (symbol_table)
5//! - Dependency analysis and recursion detection (dependencies)
6//! - Type inference (type_check)
7//! - Grammar linking (link)
8//! - Semantic validation (validation)
9
10pub mod dependencies;
11mod invariants;
12pub mod link;
13mod recursion;
14pub mod refs;
15pub mod symbol_table;
16pub mod type_check;
17mod utils;
18pub mod validation;
19pub mod visitor;
20
21#[cfg(test)]
22mod dependencies_tests;
23#[cfg(all(test, feature = "plotnik-langs"))]
24mod link_tests;
25#[cfg(test)]
26mod refs_tests;
27#[cfg(test)]
28mod symbol_table_tests;
29
30pub use dependencies::DependencyAnalysis;
31pub use link::LinkOutput;
32pub use recursion::validate_recursion;
33pub use symbol_table::{SymbolTable, UNNAMED_DEF};
34pub use type_check::{TypeContext, infer_types, primary_def_name};
35pub use validation::{
36    validate_alt_kinds, validate_anchors, validate_empty_constructs, validate_predicates,
37};
38pub use visitor::{Visitor, walk_expr};