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):
- Primary - Literals, references, parentheses (
parse_primary) - Postfix - Method calls, indexing, function calls (
.,(),[],$) - Unary - Prefix operators (
!,+,-, casts) - Multiplicative - Multiplication, division, modulo (
*,/,%) - Additive - Addition, subtraction (
+,-) - Relational - Comparison operators (
<,<=,>,>=) - Equality - Equality and inequality (
=,!=) - Logical - Logical AND and OR (
&,&&,|,||) - Conditional - Ternary operator (
?,:) - Closure - Anonymous functions (
=>) - 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());§Related Modules
expression- Top-level expression parsing and evaluationevaluate- Core evaluation traitsliteral- Literal value parsingvalue- 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.