How carrotdlaw/jlox-rs works
jlox-rs is a Rust tree-walk interpreter for Lox. A user supplies source through the command-line program; the runtime scans it into tokens, parses statements and expressions, resolves lexical scopes, then interprets the program and prints results or reports errors. The runtime also models environments, callable functions, classes, instances, and native functions. The README documents script execution but no broader product features. Edges are limited to calls shown in excerpts, source-index references, or the README; unsampled wiring is not inferred.
Main entry points: interpreter.rs Interpreter · lox.rs Lox runner · parser.rs Parser · lox_function.rs Lox functions
Components 18
Source Front End
- CLI entry
jlox/src/main.rs - Lox runner
jlox/src/lox.rs - Scanner
jlox/src/scanner.rs - Tokens and values
jlox/src/token.rs - Parser
jlox/src/parser.rs - Expression AST
jlox/src/expr.rs - Statement AST
jlox/src/stmt.rs - AST printer
jlox/src/ast_printer.rs
Resolution
- Resolver
jlox/src/resolver.rs
Interpretation
- Interpreter
jlox/src/interpreter.rs - Environment
jlox/src/environment.rs - Errors
jlox/src/error.rs
Lox Objects
- Callable interface
jlox/src/lox_callable.rs - Lox functions
jlox/src/lox_function.rs - Native functions
jlox/src/lox_native_function.rs - Lox classes
jlox/src/lox_class.rs - Lox instances
jlox/src/lox_instance.rs
Other components
- Script user
Connections 26
- Script user → CLI entry: runs script
README.md - CLI entry → Lox runner: starts runtime
- Lox runner → Scanner: scans source
jlox/src/lox.rs - Scanner → Tokens and values: emits tokens
jlox/src/scanner.rs - Lox runner → Parser: parses tokens
jlox/src/lox.rs - Parser → Expression AST: builds expressions
jlox/src/parser.rs - Parser → Statement AST: builds statements
jlox/src/parser.rs - Lox runner → Resolver: resolves statements
jlox/src/lox.rs - Resolver → Interpreter: records local scopes
jlox/src/resolver.rs - Lox runner → Interpreter: interprets program
jlox/src/lox.rs - Interpreter → Environment: reads and writes
jlox/src/interpreter.rs - Interpreter → Callable interface: dispatches calls
jlox/src/interpreter.rs - Lox functions → Callable interface: implements
jlox/src/lox_function.rs - Native functions → Callable interface: implements
jlox/src/lox_native_function.rs - Lox classes → Callable interface: implements
jlox/src/lox_class.rs - Interpreter → Lox functions: creates functions
jlox/src/interpreter.rs - Interpreter → Lox classes: creates classes
jlox/src/interpreter.rs - Interpreter → Native functions: registers natives
jlox/src/interpreter.rs - Lox functions → Environment: captures closure
jlox/src/lox_function.rs - Lox functions → Interpreter: executes body
jlox/src/lox_function.rs - Lox classes → Lox instances: creates instances
jlox/src/lox_class.rs - Lox instances → Lox classes: looks up methods
jlox/src/lox_instance.rs - Interpreter → Errors: reports runtime faults
jlox/src/interpreter.rs - Scanner → Errors: reports scan faults
jlox/src/scanner.rs - Parser → Errors: reports parse faults
jlox/src/parser.rs - AST printer → Expression AST: prints expressions
jlox/src/ast_printer.rs