Predicator.Visitor behaviour (predicator v3.5.0)
View SourceBehaviour for AST visitors.
Visitors implement the visitor pattern to traverse and transform Abstract Syntax Trees into various representations.
Examples
defmodule MyVisitor do
@behaviour Predicator.Visitor
@impl true
def visit({:literal, value}, _opts) do
value
end
@impl true
def visit({:identifier, name}, _opts) do
name
end
@impl true
def visit({:comparison, op, left, right}, opts) do
left_result = visit(left, opts)
right_result = visit(right, opts)
{op, left_result, right_result}
end
end
Summary
Callbacks
Visits an AST node and returns the transformed result.
Functions
Utility function to accept a visitor and process an AST.
Callbacks
@callback visit(ast_node :: Predicator.Parser.ast(), opts :: keyword()) :: term()
Visits an AST node and returns the transformed result.
Parameters
ast_node- The AST node to visitopts- Optional visitor-specific options
Returns
The transformed representation (type depends on visitor implementation)
Functions
@spec accept(Predicator.Parser.ast(), module(), keyword()) :: term()
Utility function to accept a visitor and process an AST.
This provides a convenient interface for applying visitors to AST nodes.
Examples
iex> ast = {:literal, 42}
iex> Predicator.Visitor.accept(ast, MyVisitor)
42