Trait Visitor

Source
pub trait Visitor<T> {
Show 17 methods // Required methods fn visit_expression_statement(&mut self, expr: &Expression) -> T; fn visit_let_statement(&mut self, stmt: &LetStatement) -> T; fn visit_type_definition_statement( &mut self, stmt: &TypeDefinitionStmt, ) -> T; fn visit_function_declaration_statement( &mut self, stmt: &FunctionDeclarationStmt, ) -> T; fn visit_return_statement(&mut self, stmt: &ReturnStatement) -> T; fn visit_assignment_statement(&mut self, stmt: &AssignmentStatement) -> T; fn visit_binary_expression(&mut self, expr: &BinaryExpr) -> T; fn visit_unary_expression(&mut self, expr: &UnaryExpr) -> T; fn visit_literal_expression(&mut self, expr: &LiteralExpr) -> T; fn visit_variable_expression(&mut self, var_expr: &VariableExpr) -> T; fn visit_call_expression(&mut self, expr: &FunctionCallExpr) -> T; fn visit_conditional_expression(&mut self, expr: &ConditionalExpr) -> T; fn visit_block_expression(&mut self, expr: &BlockExpr) -> T; fn visit_function_type_expression(&mut self, expr: &FunctionTypeExpr) -> T; fn visit_if_statement(&mut self, stmt: &IfStatement) -> T; // Provided methods fn visit_statement(&mut self, stmt: &Statement) -> T { ... } fn visit_expression(&mut self, expr: &Expression) -> T { ... }
}
Expand description

Trait implementing the visitor pattern for traversing the AST

This trait allows implementing different behaviors when traversing the AST, such as type checking, interpretation, or compilation.

The generic parameter T represents the return type of the visit methods.

Required Methods§

Source

fn visit_expression_statement(&mut self, expr: &Expression) -> T

Visit an expression statement

Source

fn visit_let_statement(&mut self, stmt: &LetStatement) -> T

Visit a variable declaration statement

Source

fn visit_type_definition_statement(&mut self, stmt: &TypeDefinitionStmt) -> T

Visit a type definition statement

Source

fn visit_function_declaration_statement( &mut self, stmt: &FunctionDeclarationStmt, ) -> T

Visit a function declaration statement

Source

fn visit_return_statement(&mut self, stmt: &ReturnStatement) -> T

Visit a return statement

Source

fn visit_assignment_statement(&mut self, stmt: &AssignmentStatement) -> T

Visit a variable assignment statement

Source

fn visit_binary_expression(&mut self, expr: &BinaryExpr) -> T

Visit a binary expression (e.g., a + b)

Source

fn visit_unary_expression(&mut self, expr: &UnaryExpr) -> T

Visit a unary expression (e.g., -x)

Source

fn visit_literal_expression(&mut self, expr: &LiteralExpr) -> T

Visit a literal expression (e.g., 42, “hello”)

Source

fn visit_variable_expression(&mut self, var_expr: &VariableExpr) -> T

Visit a variable reference expression

Source

fn visit_call_expression(&mut self, expr: &FunctionCallExpr) -> T

Visit a function call expression

Source

fn visit_conditional_expression(&mut self, expr: &ConditionalExpr) -> T

Visit a conditional expression (if/else)

Source

fn visit_block_expression(&mut self, expr: &BlockExpr) -> T

Visit a block expression

Source

fn visit_function_type_expression(&mut self, expr: &FunctionTypeExpr) -> T

Visit a function type expression (e.g., fn(i32, string) -> string)

Source

fn visit_if_statement(&mut self, stmt: &IfStatement) -> T

Visit a conditional statement (if/else)

Provided Methods§

Source

fn visit_statement(&mut self, stmt: &Statement) -> T

Visit a general statement

Source

fn visit_expression(&mut self, expr: &Expression) -> T

Visit a general expression

Implementors§