Module expressions

Source
Expand description

Expression parsing and evaluation modules for the AIMX language.

This module contains the core expression parsing infrastructure for the AIMX (Agentic Inference Markup Expressions) language. It provides a hierarchical parser that follows the operator precedence rules defined in the AIMX grammar.

§Expression Grammar Hierarchy

The expression modules are organized according to operator precedence, with higher precedence operators parsed first. The parsing hierarchy follows this order (highest to lowest precedence):

  1. Primary - Literals, references, parentheses (parse_primary)
  2. Postfix - Method calls, indexing, function calls (., (), [], $)
  3. Unary - Prefix operators (!, +, -, casts)
  4. Multiplicative - Multiplication, division, modulo (*, /, %)
  5. Additive - Addition, subtraction (+, -)
  6. Relational - Comparison operators (<, <=, >, >=)
  7. Equality - Equality and inequality (=, !=)
  8. Logical - Logical AND and OR (&, &&, |, ||)
  9. Conditional - Ternary operator (?, :)
  10. Closure - Anonymous functions (=>)
  11. Procedure - Sequence expressions (;)

Each module provides both parsing functions and AST node types that implement the ExpressionLike trait for evaluation.

§AST Flattening Optimization

The expression modules use an AST flattening optimization where each expression type includes variants for all lower-precedence expression types. This allows for efficient evaluation without deep recursion and simplifies the implementation of the ExpressionLike trait.

§Public API

The public API of this module exposes parsing functions and AST node types for each expression level. These can be used for advanced parsing scenarios or when working with specific expression types:

use aimx::expressions::{parse_additive, Additive};

// Parse an additive expression
let result = parse_additive("2 + 3");
assert!(result.is_ok());
  • expression - Top-level expression parsing and evaluation
  • evaluate - Core evaluation traits
  • literal - Literal value parsing
  • value - Runtime value representation

Re-exports§

pub use additive::Additive;
pub use additive::parse_additive;
pub use closure::Closure;
pub use closure::parse_closure;
pub use closure::parse_closure_conditional;
pub use conditional::Conditional;
pub use conditional::parse_conditional;
pub use equality::Equality;
pub use equality::parse_equality;
pub use logical::LogicalAnd;
pub use logical::parse_and;
pub use logical::LogicalOr;
pub use logical::parse_or;
pub use multiplicative::Multiplicative;
pub use multiplicative::parse_multiplicative;
pub use postfix::Postfix;
pub use postfix::parse_postfix;
pub use postfix::parse_accessor;
pub use primary::Primary;
pub use primary::parse_parentheses;
pub use primary::parse_primary;
pub use procedure::Procedure;
pub use procedure::parse_procedure;
pub use reference::Reference;
pub use reference::parse_reference;
pub use reference::parse_identifier;
pub use relational::Relational;
pub use relational::parse_relational;
pub use unary::Unary;
pub use unary::parse_unary;

Modules§

additive
Additive expression parsing and evaluation for the AIMX language.
closure
Closure expression parsing and invocation.
conditional
Conditional expression parsing and evaluation.
equality
Equality expression parsing and evaluation for the AIMX language.
logical
Logical expression parsing and evaluation.
multiplicative
Multiplicative expression parsing and evaluation.
postfix
Postfix expression parsing and evaluation for the AIMX language.
primary
Primary expression parsing and evaluation for the AIMX grammar.
procedure
Procedure expression parsing and evaluation.
reference
Variable reference parsing for the AIMX language.
relational
Relational expression parsing and evaluation for the AIMX expression grammar.
unary
Unary expression parsing and evaluation for the AIM expression grammar.