Statifier.Validator.ExpressionCompiler (statifier v1.9.0)

View Source

Compiles expressions in SCXML documents for performance optimization.

This module handles compilation of all expression types during document validation, collecting compilation errors as warnings for developer feedback. Expression compilation happens after structural validation but before runtime optimization.

Compilation Strategy

  • Transitions: Compile cond attributes for condition evaluation
  • SendAction: Compile event_expr, target_expr, type_expr, delay_expr
  • AssignAction: Compile expr attribute for value evaluation
  • IfAction: Compile condition expressions in conditional blocks
  • ForeachAction: Compile array expression for iteration

Warning Collection

Compilation errors are collected as validation warnings with detailed context:

  • Expression content and context (e.g., "transition condition")
  • Source location information (line/column when available)
  • Compilation error details for debugging

Usage

# Compile expressions in a document during validation
{warnings, compiled_document} = ExpressionCompiler.compile_document(document)

Summary

Functions

Compile all expressions in a document and collect warnings.

Functions

compile_document(document)

@spec compile_document(Statifier.Document.t()) ::
  {[String.t()], Statifier.Document.t()}

Compile all expressions in a document and collect warnings.

Returns a tuple with compilation warnings and the document with compiled expressions.