aimx/expressions/
mod.rs

1//! Expression parsing and evaluation for AIMX.
2//!
3//! This module defines the operator-precedence hierarchy for AIMX expressions
4//! and re-exports the core AST nodes and parse entry points used by the
5//! high-level API.
6
7// Core expression parsing and evaluation modules
8pub mod additive;
9pub mod branch;
10pub mod closure;
11pub mod coalesce;
12pub mod collection;
13pub mod conditional;
14pub mod equality;
15pub mod evaluate;
16pub mod expression;
17pub mod logical_and;
18pub mod logical_or;
19pub mod multiplicative;
20pub mod postfix;
21pub mod primary;
22pub mod relational;
23pub mod retry;
24pub mod unary;
25
26// Re-export key types for public API
27
28/// Additive expressions (`+`, `-`).
29pub use additive::{Additive, parse_additive};
30
31pub use branch::{Branch, parse_branch};
32
33/// Closure expressions (`=>`).
34pub use closure::{Closure, parse_closure, parse_closure_conditional};
35
36/// Collection expressions (`{ key = expr; ... }`).
37pub use collection::{Collection, parse_collection};
38
39/// Conditional expressions (`? :`).
40pub use conditional::{Conditional, parse_conditional};
41
42/// Coalesce expressions (`??`).
43pub use coalesce::{Coalesce, parse_coalesce};
44
45pub use evaluate::{ExpressionLike, evaluate_and_promote, statically_evaluate};
46
47pub use expression::{Expression, parse_argument_list, parse_expression};
48
49/// Equality expressions (`==`, `!=`).
50pub use equality::{Equality, parse_equality};
51
52/// Logical expressions (`&`, `&&`, `|`, `||`).
53pub use logical_and::{LogicalAnd, parse_and};
54pub use logical_or::{LogicalOr, parse_or};
55
56/// Multiplicative expressions (`*`, `/`, `%`).
57pub use multiplicative::{Multiplicative, parse_multiplicative};
58
59/// Postfix expressions (`.`, `()`, `[]`).
60pub use postfix::{Postfix, parse_accessor, parse_postfix};
61
62/// Primary expressions (literals, references, parentheses).
63pub use primary::{Primary, parse_parentheses, parse_primary};
64
65/// Reference expressions (identifiers and field access).
66pub use crate::reference::{Reference, parse_identifier, parse_arc_identifier, parse_reference};
67
68/// Relational expressions (`<`, `<=`, `>`, `>=`).
69pub use relational::{Relational, parse_relational};
70
71/// Retry expressions for evaluation policies.
72pub use retry::{Retry, parse_retry};
73
74/// Unary expressions (`!`, `+`, `-`, casts).
75pub use unary::{Unary, parse_unary};