//! # AIR — Analyse Intermediate Representation
//!
//! Промежуточное представление программы, построенное специально для
//! анализа (в отличие от представлений, которые в будущем могли бы
//! понадобиться кодогенератору — у них другие приоритеты: точность layout
//! секций, релокации и т.п.).
//!
//! На данный момент AIR состоит из одной структуры — [`cfg::Cfg`], графа
//! потока управления, построенного из плоского AST. Это базис, на котором
//! можно делать анализы, недоступные простому линейному проходу по
//! `Statement`: достижимость кода, корректность переходов между блоками,
//! а в перспективе — dataflow-анализы, которым нужно учитывать слияние
//! состояний из нескольких предшественников (live variables, available
//! expressions и т.д.).
pub mod analysis;
pub mod cfg;
pub mod err;

pub use cfg::{BasicBlock, BlockId, Cfg, Terminator, build_cfg};
pub use err::{AIRError, AIRErrorKind};
