Elex.Validator (Elex v0.2.1)

View Source

Validates a parsed expression AST for type correctness.

Checks that operators are applied to compatible types, variables exist in the context, and function calls match registered signatures. Used by Elex.Parser during parsing and available for direct AST validation.

Examples

context = Elex.new_context() |> Elex.add_variable("x", 10)
{:ok, ast, _} = Elex.Parser.parse("x + 5", context, validate: false)
Elex.Validator.validate(ast, context)
#=> {:ok, :decimal}

Summary

Functions

Validates an expression AST against a context.

Functions

validate(ast, ctx)

@spec validate(term(), Elex.Context.t()) :: {:ok, atom()} | {:error, String.t()}

Validates an expression AST against a context.

Parameters

Returns

  • {:ok, type} - The expression's result type (:decimal, :boolean, :string, or nil)
  • {:error, reason} - A human-readable validation error

Examples

context = Elex.new_context() |> Elex.add_variable("x", 10)
{:ok, ast, _} = Elex.Parser.parse("x > 0", context, validate: false)
Elex.Validator.validate(ast, context)
#=> {:ok, :boolean}