From 2d739d98ccd2669eddc693a9c103985e463f4786 Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Wed, 28 May 2025 21:08:14 +0200 Subject: [PATCH] some documentation --- src/ast_printer.rs | 3 +++ src/resolver.rs | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/ast_printer.rs b/src/ast_printer.rs index e66acfc..bc4737b 100644 --- a/src/ast_printer.rs +++ b/src/ast_printer.rs @@ -1,5 +1,6 @@ use crate::{expression::Expression, statement::Statement, token::Literal}; +/// Generate a string representation of a list of AST statements. pub fn print(statements: &[Statement]) -> String { let mut result = String::new(); for statement in statements { @@ -8,6 +9,7 @@ pub fn print(statements: &[Statement]) -> String { result } +/// Recursively generate a string representation of a single AST statement. fn print_statement(statement: &Statement, indent: usize) -> String { let indent_str = " ".repeat(indent); match statement { @@ -131,6 +133,7 @@ fn print_statement(statement: &Statement, indent: usize) -> String { } } +/// Recursively generate a string representation of a single AST expression. fn print_expression(expr: &Expression) -> String { match expr { Expression::Assign { name, value } => { diff --git a/src/resolver.rs b/src/resolver.rs index e5d1fd5..f777fd3 100644 --- a/src/resolver.rs +++ b/src/resolver.rs @@ -40,9 +40,13 @@ enum ClassType { /// Resolve variable references and perform static analysis before interpretation. #[derive(Debug)] pub struct Resolver<'a> { + /// Stack of scopes, each mapping variable names to their initialized state. scopes: Vec>, + /// Reference to the interpreter to resolve variable depths. interpreter: &'a mut Interpreter, + /// Track the type of the current function being resolved (regular, method, initializer, ...). current_fun: FunctionType, + /// Tracks the type of the current class being resolved (regular, subclass, ...). current_class: ClassType, }