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§
Sourcefn visit_expression_statement(&mut self, expr: &Expression) -> T
fn visit_expression_statement(&mut self, expr: &Expression) -> T
Visit an expression statement
Sourcefn visit_let_statement(&mut self, stmt: &LetStatement) -> T
fn visit_let_statement(&mut self, stmt: &LetStatement) -> T
Visit a variable declaration statement
Sourcefn visit_type_definition_statement(&mut self, stmt: &TypeDefinitionStmt) -> T
fn visit_type_definition_statement(&mut self, stmt: &TypeDefinitionStmt) -> T
Visit a type definition statement
Sourcefn visit_function_declaration_statement(
&mut self,
stmt: &FunctionDeclarationStmt,
) -> T
fn visit_function_declaration_statement( &mut self, stmt: &FunctionDeclarationStmt, ) -> T
Visit a function declaration statement
Sourcefn visit_return_statement(&mut self, stmt: &ReturnStatement) -> T
fn visit_return_statement(&mut self, stmt: &ReturnStatement) -> T
Visit a return statement
Sourcefn visit_assignment_statement(&mut self, stmt: &AssignmentStatement) -> T
fn visit_assignment_statement(&mut self, stmt: &AssignmentStatement) -> T
Visit a variable assignment statement
Sourcefn visit_binary_expression(&mut self, expr: &BinaryExpr) -> T
fn visit_binary_expression(&mut self, expr: &BinaryExpr) -> T
Visit a binary expression (e.g., a + b)
Sourcefn visit_unary_expression(&mut self, expr: &UnaryExpr) -> T
fn visit_unary_expression(&mut self, expr: &UnaryExpr) -> T
Visit a unary expression (e.g., -x)
Sourcefn visit_literal_expression(&mut self, expr: &LiteralExpr) -> T
fn visit_literal_expression(&mut self, expr: &LiteralExpr) -> T
Visit a literal expression (e.g., 42, “hello”)
Sourcefn visit_variable_expression(&mut self, var_expr: &VariableExpr) -> T
fn visit_variable_expression(&mut self, var_expr: &VariableExpr) -> T
Visit a variable reference expression
Sourcefn visit_call_expression(&mut self, expr: &FunctionCallExpr) -> T
fn visit_call_expression(&mut self, expr: &FunctionCallExpr) -> T
Visit a function call expression
Sourcefn visit_conditional_expression(&mut self, expr: &ConditionalExpr) -> T
fn visit_conditional_expression(&mut self, expr: &ConditionalExpr) -> T
Visit a conditional expression (if/else)
Sourcefn visit_block_expression(&mut self, expr: &BlockExpr) -> T
fn visit_block_expression(&mut self, expr: &BlockExpr) -> T
Visit a block expression
Sourcefn visit_function_type_expression(&mut self, expr: &FunctionTypeExpr) -> T
fn visit_function_type_expression(&mut self, expr: &FunctionTypeExpr) -> T
Visit a function type expression (e.g., fn(i32, string) -> string)
Sourcefn visit_if_statement(&mut self, stmt: &IfStatement) -> T
fn visit_if_statement(&mut self, stmt: &IfStatement) -> T
Visit a conditional statement (if/else)
Provided Methods§
Sourcefn visit_statement(&mut self, stmt: &Statement) -> T
fn visit_statement(&mut self, stmt: &Statement) -> T
Visit a general statement
Sourcefn visit_expression(&mut self, expr: &Expression) -> T
fn visit_expression(&mut self, expr: &Expression) -> T
Visit a general expression